- 博客(31)
- 资源 (7)
- 收藏
- 关注
转载 struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head
2017-06-26 10:45:20 385
转载 linux内核链表实现
linux内核链表实现 内核实现的是双向循环链表,提供了链表操作的基本功能。(1)初始化链表头结点#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)static inli
2017-06-20 11:28:24 325
原创 dlopen 介绍
dlopen 介绍#include void *dlopen(const char *filename, int flag);char *dlerror(void);void *dlsym(void *handle, const char *symbol);int dlclose(void *handle);打开一个动态链接库,并返回动态链接库的句柄。flag:
2017-06-19 11:25:54 1624
原创 glob和snprintf
glob函数 用于linux文件系统中路径名称的模式匹配。#includeint glob(const char *pattern, int flages, int (*errfunc)(const char* epath, int errno), glob_t *pglob);void globfree(glob_t *pgl
2017-06-16 11:24:31 578
原创 linux复用技术:poll
12#include int poll(struct pollfd *fds, nfds_t nfds, int timeout);总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再
2017-06-16 11:24:00 324
原创 Udp 并发问题分析与总结
一、tcp并发与udp并发的区别 无论是epoll还是select,在观察有无数据就绪时,都是针对多个文件描述符。如果只有一个文件描述符,那么进程只要观察那一个文件描述符即可。在网络编程中,一个Socket对应一个文件描述符。Tcp协议的server在监听端口前初始化一个socket,每有一个新的连接,就新建一个socket。因此当tcp服务器面对高并发请求时,实际上有多个so
2017-06-14 09:44:07 6958
原创 守护进程和inetd超级服务器
13.1 概述守护进程(daemon)是在后台运行且不与任何控制终端关联的进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。守护进程有多种启动的方法:1、在系统启动阶段,许多守护进程由系统初始化脚本启动。2、许多网络服务器将由inetd超级服务器启动。ine
2017-06-14 09:43:08 437
转载 Offsetof与container_of宏总结
1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认
2017-06-13 20:03:01 304
原创 current宏
current 是指当前进程每个进程在内核态下都会开辟一个内核栈(8K或4K),一般大小为8KB,一般每个任务的thread_info结构在它的内核栈的尾端分配。这个thread_info结构是指向task_struct的。thread_info的代码在struct thread_info { struct
2017-06-13 08:58:38 599
转载 僵尸进程与孤儿进程
在探讨这个问题之前,我们先来弄清什么是进程。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程是一个具有独立功能的程序关于某个数据集
2017-06-12 15:10:23 293
原创 ubuntu卸载多余的内核
dpkg --get-selections | grep linux-imagesudo apt-get remove linux-image-3.0.0-12-generic然后修改 /boot/grub/grub.cfg文件
2017-06-12 11:23:26 1336
原创 ubuntu中CUDA 5.5安装
安装CUDA需要在非图形界面下进行,首先切换到虚拟控制台(ctrl + alt + F1)停止图形界面服务的运行sudo stop lightdm切换到cuda安装包所在的目录下面(cuda-~.run)sudo sh cuda-~.run 就会弹出安装界面依次输入accept --> y --> y --> 回车键 --> y --> 回车键修改环境
2017-06-12 11:23:02 477
原创 linux内核的编译(2.6.39.4)
下载源码 linux-2.6.39.4.tar.bz2把源码包复制到/usr/src下,然后解压(tar -xvf linux-2.6.39.4.tar.bz2)进入解压后的的目录, make mrproper然后开始编译内核, make menuconfig 可能会出现缺少ncurses包apt-get install libncurses5-dev进入编
2017-06-12 11:22:09 888
原创 Ubuntu中安装Nvidia闭源驱动
安装图形驱动前,要安装好下面的这些依赖包和开发工具apt-get install build-essential pkg-configapt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa libgl1-mesa-dri (编译Sample时所需的依赖包)libglu1-mesa libglu1
2017-06-12 11:20:55 3226 2
原创 apt和dpkg简要使用参考表
apt-get install 下载以及所有依赖的包,同时进行包的安装或升级。如果某个包被设置了hold(停止标志)就会被搁在一边(即不会被升级),更多hold细节请看下面。apt-get remove [--purge] 移除以及任何依赖这个包的其它包。--purge指明这个包应该被完全清除(purged),更多信息请看dpkg -P。apt-get update升级
2017-06-12 11:20:02 995
原创 linux中的重定向
当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。下面就是这些文件描述符及它们通常所对应的文件名:文件描述符输入文件—标准输入0:它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。输出文件—标准输出1:它是命令的输出,缺省是屏幕,也可以是文件。错
2017-06-12 11:19:35 531
原创 Ubuntu修改提示符
修改提示符的颜色和内容:1、打开.bashrc文件 vi ~/.bashrc2、找到 if [ "$color_prompt" = yes ];then 在这之前加上color_prompt = yes 然后修改下面相应的PS1的内容和颜色3、第二个 PS1 为 PS1=’${debi
2017-06-12 11:18:32 971
原创 apt-get update 出现错误
1.将 /var/lib/apt/lists/partial/下的所有文件删除,一般就可以解决了2.如果还是不能解决 那么在/etc/apt/apt.conf.d/00aptitude 文件中加上一行Acquire::CompressionTypes::Order "gz";3.如果是因为版本太老而出错的话,把/etc/apt/sources.list 中 所有的arc
2017-06-12 11:17:50 954 1
原创 OpenCL读取内核cl文件
普遍上的OpenCL编程都分为两个部分,一个为主机端代码,一个为设备端代码。主机端代码的作用是:主要是负责设置设备执行代码的环境,以及与设备端的通信。设备端代码的作用是:设备上所要执行的功能函数。在主机端和设备端通信的过程中,会有一个读取设备端代码的过程。通常就是读取cl文件。因为在创建程序对象program时,需要用到这个cl文件。创建程序对象就会把这
2017-06-11 13:17:19 5107
原创 OpenCL编程之同步问题:事件
事件(event)是OpenCL中传递命令状态的对象。命令队列中的命令会生成事件,其他命令在执行之前可能要等待这些事件。用户可以创建定制事件,在宿主机和计算设备之间提供额外的一层控制。在内核中,程序员利用时间可以允许数据的移动与这些数据的相关操作重叠进行。OpenCL事件是OpenCL中传递命令有关信息的对象。事件的状态描述了相关命令的状态。可以取一下状态值。CL_
2017-06-11 13:16:28 3626
原创 gcc g++版本降级
先安装低版本的gcc和g++然后 cd /usr/bin sudo mv gcc gcc.bak sudo ln -s gcc-低版本 gcc sudo mv g++ g++.bak
2017-06-11 13:15:34 1252
转载 与内存管理相关的几个宏
这几个宏把无符号整数转换成对应的类型#define __pte(x) ((pte_t) { (x) } )#define __pmd(x) ((pmd_t) { (x) } )#define __pgd(x) ((pgd_t) { (x) } )#define __pgprot(x) ((pgprot_t) { (x) } )根据x把它转换成对应的无符号整数#defin
2017-06-11 13:14:21 353
原创 逻辑地址、线性地址、物理地址
逻辑地址 包含在机器语言指令中用来指定一个操作数或一条指令的地址。每一个逻辑地址都由一个段和偏移地址组成。线性地址 线性地址也称虚拟地址。是一个32位无符号整数,可以用来表示高达4GB的地址。物理地址 用于内存芯片级内存单元寻址。他们与从微处理器的地址引脚发送到内存总线上的电信号相对应。物理地址有3
2017-06-11 13:13:17 725
翻译 Getting Started: Building and Running Clang
Getting Started: Building and Running Clang本页面为您提供最短路径检查Clang和演示几个例子。这应该能让最小的遇到麻烦和混乱来运行它。如何你得到了你想要的结果,请考虑参与Clang社团Building Clang and Working with the Code如果你要检查和编译Clang,具体步骤如下:获得所需
2017-06-11 13:10:52 312
翻译 Getting Started with the LLVM System
Overview欢迎到LLVM!为了开始,你首先需要知道一些基本的信息。首先,LLVM有三部分。第一部分是LLVM套件。这部分包含了使用LLVM所包含的所有工具,库和头文件。它包含汇编,反汇编,位码分析器和位码优化器。他也包含了基本的回归测试,可以用来测试LLVM工具和Clang前端。第二部分是Clang前端。此组件是把C,C++,C.obj,C++.obj编译成LLVM位
2017-06-11 13:10:12 530
原创 Ubuntu编译安装LLVM
每次开机的时候都要更新系统 sudo apt-get update!!准备工作1:首先,在官网下载llvm源码包,clang包和compile-rt包。 然后,用解压llvm, 然后把clang包解压到llvm的tools文件夹里 ,再把compil-rt解压到llvm中的projects文件夹下具体步骤:cd Downloads(
2017-06-11 12:11:20 3138
原创 NULL NUL \0 EOF
NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指;'/0': 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'/0'类似,但是在c/c++中没有定义,如果要使用的话,需要自定义为 #define NUL '/0';EOF : 通常定义为-1, 文件结束符标志,一般是ctrl+z
2017-06-11 12:09:27 405
原创 在C语言中,double、long、unsigned、int、char类型数据所占字节数
在C语言中,double、long、unsigned、int、char类型数据所占字节数和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):sizeof(short int)sizeof(int)short int至少应为16位(2字节)long int至少应为32
2017-06-11 12:07:29 830
原创 printf和scanf的返回值
scanf()的返回值为成功输入的数据个数12scanf("%d%d%s",&a,&b,s); //执行成功返回3.scanf("%d%d",&a,&b);//执行成功返回2.如果在输入的过程中scanf("%d%d",&a,&b);由于某种原因只有a输入成功了则返回1,a、
2017-06-11 12:05:16 419
原创 栈和队列
栈栈是一种后进先出(LIFO)的容器。栈限定了只能在栈顶进行插入或删除操作。跟栈相关的是递归操作。因为每次递归都会自动创建栈来保存当前的状态。也就是说,递归实现的算法都可以用栈来实现。栈的两种基本操作:Push:在栈顶插入一个元素。Pop:将栈顶元素弹出。栈的实现分为两种:顺序栈:使用数组来实现的栈。顺序栈的实现简单,但是会存在栈满的情况
2017-06-11 11:56:54 300
原创 centos7安装opencl环境
CentOS7+AMD+OpenCL环境搭建因为原来的SOC的除了问题,导致自己重新搭建环境。重新搭建环境时,遇到了不少问题。现在将过程整理成文档,以供自己以后参考。准备工作centos7镜像(CentOS-7.0-1406-x86_64-DVD.iso)amd显卡驱动包(radeon-crimson-15.12-15.302-151217a-297685e.zip)amd app sdk3.
2017-06-11 11:48:13 8512
mali dp550 datasheet
2024-05-15
91030M芯片设计文档
2024-05-15
UEFI下图形驱动开发手册
2023-11-27
FSL91030M datasheet
2023-11-27
长工微is6608调试软件
2023-11-27
基于单幅图像的快速去雾源码实现
2017-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人