linux
文章平均质量分 76
dead_angel
这个作者很懒,什么都没留下…
展开
-
大端小端判断
试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1解答:int checkCPU() { { union w { int a; char b; } c; c.a = 1; return (c.b == 1); } } 剖析转载 2013-03-29 09:50:04 · 482 阅读 · 0 评论 -
结构体4字节对齐规则的详解
一 四字节对齐的规则C++中结构体变量的存储为什么有个4字节对齐的规则,这里是假设32位机器上,CPU在读取内存数据的时候4字节对齐会取得更快的速度;这是因为:1字节8位,4字节正好32位,而32位机器的寄存器,地址什么的都是32位的,正好一次处理就完成。二 相关内容解释例如,下面的结构各成员空间分配情况:[cpp] view plain转载 2013-04-17 17:08:57 · 2719 阅读 · 0 评论 -
调用内核hlist编写的测试代码
最近在做linux内核编程,最深的一点感触是:算法的巧妙,犹如看一场高明杂技真正的程序员那是键盘上灵动的舞者。写面写的是一个调用内核的hlist测试代码。/***how to program use the hlist in kernel**/#include #include /* kind of macros */#include#include#include#i原创 2013-04-18 15:09:01 · 716 阅读 · 0 评论 -
netlink实例
#include linux/init.h>#include linux/module.h>#include linux/timer.h>#include linux/time.h>#include linux/types.h>#include net/sock.h>#include net/netlink.h> #define NETLINK_TEST 25#转载 2013-04-18 16:35:49 · 747 阅读 · 0 评论 -
完成变量(一种简单的信号量)
struct completion:有的时候我们需要在一个线程里面发起另外一个线程里的某些动作,然后等待另外一个线程的动作完成.这个我们可以用completion.这是信号量的一种简单实现.完成变量是信号量的一种简单的实现。当一个任务运行需要请求某个资源或条件的情况下, wait_for_completion() 函数将此任务放入等待队列,等待。另外一个任务使用完这个资源通过 co转载 2013-04-19 11:57:13 · 819 阅读 · 0 评论 -
netlink流程的讲解
这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz [size=3]参考文档[/size] 《Linux 系统内核空间与用户空间通信的实现与分析》 陈鑫转载 2013-04-18 17:39:06 · 1074 阅读 · 0 评论 -
netlink测试程序的编写
有幸看到文章的童鞋,送上一句话。linux内核的编程遥遥无期,也不知到何时才是头,至少我们知道未来是光明的,而且也为解决的每一个问题感到兴奋无比。下面是我查找大牛的相关netlink详解和代码,重新写了一遍,也想大家能自己写一遍,熟悉一下流程。the kernel moduule:/** how to program use netl原创 2013-04-19 16:19:47 · 1412 阅读 · 0 评论 -
信号量的学习
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为 0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux 提供两种信号量:(1) 内核信号量,由内核控制路径使用(2) 用 户 态 进 程 使转载 2013-04-19 16:28:34 · 572 阅读 · 0 评论 -
fork()函数的理解
作者:王姗姗,华清远见嵌入式学院讲师。 对于刚刚接触Unix/Linux操作系统,在Linux下编写多进程的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。 首先我们来看下fork函数的原型: #i nclude #i nclude pid_t fork(void); 返回值: 负数:如果出错,则fork()返转载 2013-04-19 18:06:56 · 525 阅读 · 0 评论 -
信号量学习笔记
信号量的作用: 保证同一时间,某一资源只被一个进程访问。信号量的取值: if (信号量==0) { 不能访问资源; }原创 2013-04-19 18:05:44 · 700 阅读 · 0 评论 -
linux内核 hlist 讲解
这两个数据结构在内核中随处可见,不得不拿出来单独讲讲. 这两个数据结构都是为了方便内核开发者在使用到类似数据结构的时候不必自行开发(虽然不难),因此它们需要做到足够的"通用性",也就是说,今天可以用它们做一个存放进程的链表,明天同样可以做一个封装定时器的链表.两个数据结构的对外API封装了针对它们的基本操作,也是最常见的操作,比如遍历,查找等等. 一般的,如果我们需要写一个链表转载 2013-04-17 15:55:31 · 884 阅读 · 0 评论 -
内核随机数产生器
Linux内核实现了一个随机数产生器,从理论上说这个随机数产生器产生的是真随机数。与标准C库中的rand(),srand()产生的伪随机数不同,尽管伪随机数带有一定的随机特征,但这些数字序列并非统计意义上的随机数。也就是说它们是可重现的--只要每次使用相同的seed值,就能得到相同的伪随机数列。通常通过使用time()的返回值来改变seed,以此得到不同的伪随机数序列,但time()返回值的结果并转载 2013-04-17 17:36:22 · 1047 阅读 · 0 评论 -
http通信的详细过程
B/S 通信简述整个计算机网络的实现体现为协议的实现, TCP/IP 协议是 Internet 的核心协议, HTTP 协议是比 TCP 更高层次的应用层协议。HTTP ( HyperText Transfer Protocol ,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 的初衷是为了提供一种发布和接收 HTML 页面的方转载 2013-03-29 11:31:28 · 1326 阅读 · 0 评论 -
内核模块编程对用户空间文件的访问
/** HOW TO READ\WRITE THE FILE IN KERNEL MODULE*/#include #include #include #include #include #include #include #include #include原创 2013-04-10 09:30:01 · 698 阅读 · 0 评论 -
struct kmem_cache kem_cache_create kem_cache_alloc kem_cache_free
来自:http://linux.chinaunix.net/bbs/viewthread.php?tid=913690 为了更好的得到问题解决,也对问题的提出进点义务,在抛出我的问题前先简单介绍一下Linux下slab高速缓存的使用方法。在内核编程中,可能经常会有一些数据结构需要反复使用和释放,按照通常的思路,可能是使用kmalloc和kfree来实现。但是这种方式效率转载 2013-04-13 08:29:47 · 691 阅读 · 0 评论 -
Linux内核和用户空间通信的方法
Linux内核和用户空间通信的方法(二)— 使用netlink 作者:Kendo2006-9-3这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载:http://www-128.ibm.com/developerworks/c转载 2013-04-13 08:42:32 · 2894 阅读 · 0 评论 -
linux内核定时器编程
1.linux内核定时器基本结构和函数1)struct timer_list 一个struct timer_list对应了一个定时器。#include 以下列出常用的接口:struct timer_list { /*....*/ unsigned long expires;//定时器服务函数开始执行时间 void (*f转载 2013-04-15 15:48:40 · 582 阅读 · 0 评论 -
linux内核定时器编程测试代码
/***HOW TO PROGRAM with timer**///the tips to use the timer //1)declare the timer_list structure//2)call the init_timer();//3)set the field of the struct timer_list;//4) add_time原创 2013-04-15 16:16:28 · 698 阅读 · 0 评论 -
UIO 用户空间设备驱动
UIO求助编辑百科名片UIO(Userspace I/O)是运行在用户空间的I/O技术。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题!目录定义转载 2013-04-24 09:36:46 · 1108 阅读 · 0 评论 -
不会linuxshell命令真可怕
为了在内核源代码中定位一个字符串,不会shell的我果断悲剧。对比一下,不会shell的同志加油啦! 1)我自己写一个定位设立了:#!/bin/sh#列出源码下所有的头文件和有的源文件KEY_WORD=$1#echo ${key_word}#获得当前目录PWD=$(pwd)#存储的文件FILE_LOAD="${原创 2013-04-16 18:02:31 · 514 阅读 · 0 评论 -
linux内核用户通信netfilter
netfilter提供了nf_register_sockopt()和nf_unregister_sockopt()来动态登记或取消sockopt命令字;打开一个网络socket后可以使用set/getsockopt(2)可实现用户空间与内核的通信,本质和ioctl差不多,区别在于set/getsockopt不用新建设备,直接利用系统已有的socket类型就可以进行,可用setsockopt函数向内转载 2013-04-16 09:59:57 · 723 阅读 · 0 评论 -
linux 守护进程
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程转载 2013-05-03 16:02:59 · 548 阅读 · 0 评论