
代码编程
_银叶先生
这个作者很懒,什么都没留下…
展开
-
linux守护进程模型 之 代理功能
守护进程(服务器端):daemon.h daemon.c daemon_mod.c/****************daemon.h***************/#ifndef _DAEMON_H_#define _DAEMON_H_#include#include#include#ifdef __cpluscplusextern "C" {#endif原创 2013-10-15 11:23:06 · 989 阅读 · 0 评论 -
存储之磁盘读写-----基于scsi cmd和bio
这几天做了一个抽象磁盘驱动的例子,直接提供用户ioctl接口,把用户态buf(页对齐)写入(读取)到磁盘,并使用了两个方案做性能测试对比:一种scsi层,一种块层;基于scsi cdb 读写硬盘-----------裸盘读写#include #include #include #include #include #include #include #inc原创 2013-05-21 15:11:07 · 3548 阅读 · 0 评论 -
netlink编程示例
NETLINK 简介: Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink套接字可以使用标准的套接字APIs来创建。socket(), bind(), sendmsg(), recvmsg() 和 close()很容易地应用到 netlin原创 2013-05-21 14:50:01 · 1529 阅读 · 0 评论 -
块设备驱动---RAMDISK
#include #include #include #include #include #include #include #include #include #define RAMHD_NAME "ramhd"#define RAMHD_MAX_DEVICE 2#define RAMHD_MAX_PARTITI转载 2013-03-05 16:23:44 · 1028 阅读 · 0 评论 -
字符设备驱动
驱动源码:#include #include #include #include #include #include #include #include #include #include #include typedef unsigned int uint32;ssize_t bbu_read(struc原创 2012-09-05 11:11:39 · 602 阅读 · 0 评论 -
内核驱动之内核线程示例
#include #include #include #include #include #include #include #include #define IBX_GPIO12_OUT 1 #define IBX_GPIO44_OUT 1 #define IBEX_GPIOBASE (0x500)#define GP_LVL原创 2012-09-05 11:16:01 · 2077 阅读 · 0 评论 -
内核驱动之内核定时器示例
#include#include#include#include #include #include #include #include #define IBX_GPIO12_OUT ( 1 #define IBX_GPIO44_OUT ( 1 #define IBEX_GPIOBASE (0x500)#define GP_LVL原创 2012-09-05 11:16:58 · 1238 阅读 · 0 评论 -
用户态发送SCSI命令例程 ( sg )
sg3_utils 是一个Linux的开发包,用来直接使用 SCSI 命令集访问设备。下面自己写一个例程:sg.c#include #include #include #include #include #include #include #include #include #include #define SENSE_LEN 255原创 2013-06-14 15:01:59 · 6888 阅读 · 1 评论 -
STGT:target userspace utils
STGT:最新源码http://stgt.sourceforge.net/// tgt.h#ifndef __TGT_H__#define __TGT_H__#include #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))#define TGT_IPC_ADDR "/var/run/tgtd.ipc_abstr原创 2013-10-30 18:42:28 · 2088 阅读 · 0 评论 -
进程互斥----ttylock()类似原理实现
之前帮朋友看了一下代码,他想用ttylock(),ttyunlock()系列函数去锁定/dev/ttyS0,但是编译时找不到这些函数,后来我发现这个函数是AIX上的,后来看了一下他的原理。故按其原理实了如下函数:用以在进程启动时杀掉已经启动的相同进程。int check_lock(char*file){FILE*fd;int bpid;fd=fopen(file,"r");原创 2013-12-02 20:39:19 · 937 阅读 · 0 评论 -
framebuffer设备测试操作
#include#include#include#include#include#define COLOR565_RED 0XF800#define COLOR565_GREEN 0X07E0#define COLOR565_BLUE 0X001Fint fdfb=-1;struct fb_fix_screeninfo fbfix={0};s原创 2013-11-28 13:59:59 · 943 阅读 · 0 评论 -
内核态访问用户态地址
用户态进程的虚拟地址如何转换成物理地址? 区分一个进程,我们都知道最简单就是进程的pid。我们就从(pid,virtualaddress)来看看如何将一个进程的虚拟地址转换为物理地址phyaddress。 首先根据pid我们可以得到这个进程的task_struct,进而通过task_struct得到mm,通过mm得到pgd。 好了,现在我们有pgd和virtualaddr转载 2013-03-14 15:43:54 · 3304 阅读 · 0 评论 -
filp_open与filp_close和get_fs 与set_fs
在linux内核编程时,进行系统调用(如文件操作)时如果要访问用户空间的参数,可以用set_fs,get_ds等函数实现访问。get_ds获得kernel的内存访问地址范围(IA32是4GB),set_fs是设置当前的地址访问限制值,get_fs是取得当前的地址访问限制值。进程由用户态进入核态,linux进程的task_struct结构中的成员addr_limit也应该由0xBFFFFFFF变为0转载 2013-06-01 14:31:46 · 6268 阅读 · 2 评论 -
mmap学习
用户态与核态共享内存kmmap.h#define PAGE_SHIFT_4K 12#define KMMAP_MEM_MB_SHIFT 20#define KMMAP_MEM_GB_SHIFT 30#define KMMAP_MEM_MB_MASK 0xFFFFF#define KMMAP_MEM_TOTAL_SZIE (((unsigned long)4)原创 2013-06-01 10:26:37 · 1353 阅读 · 0 评论 -
c语言与shell脚本结合
项目日记:最近做项目是遇到一些C代码与SHELL交互的问题,现总结如下:有时候shell脚本可以很好的得到结果,但用C语言代码很难实现。尤其是一些查询系统相关信息时,很多时候可以直接用shell命令得到,但c代码却很难得到。估可以考虑在c代码中加入与SHELL有关的代码,把一些变量由SHELL来得到。C语言调用SHELL脚本有三种方法:1.system() 不用你自己去产生进程原创 2013-06-06 19:59:58 · 5017 阅读 · 0 评论 -
C语言--配置文件解析
/*****************************************************************************file like this : [section]parameter = value***********************************************************************转载 2013-07-15 20:56:14 · 1411 阅读 · 0 评论 -
RAMDISK与文件系统
本样例要与之前的一篇RAMDISK文章一起学习:ram_ext3.h#ifndef __RAM_EXT3_H__#define __RAM_EXT3_H__/* * Structure of the super block */struct ext3_super_block {/*00*/ __le32 s_inodes_count; /* In转载 2013-07-03 11:09:07 · 917 阅读 · 0 评论 -
算法系列之1:计算中国农历(一) .
世界各国的日历都是以天为最小单位,但是关于年和月的算法却各不相同,大致可以分为三类: 阳历--以天文年作为日历的主要周期,例如:中国公历(格里历)阴历--以天文月作为日历的主要周期,例如:伊斯兰历阴阳历--以天文年和天文月作为日历的主要周期,例如:中国农历 我国古人很早就开始关注天象,定昼夜交替为“日”,月轮盈亏为“月”,寒暑交替为“年”,在总结日月变化规律的基础上制定了兼转载 2013-07-04 12:31:18 · 2040 阅读 · 0 评论 -
linux USB 驱动开发 (未完)
从硬件上来说,usb 设备要想工作,除了外设本身,必须还有一个咚咚叫做 usb host controller.一般来说,一个电脑里有一个 usb host controller就可以了,她就可以控制很多个设备了,比如 u 盘,比如 usb 键盘,比如 usb 鼠标.所有的外设都把自己的请求提交给usb host controller.然后让 usb host controller 统一来调度.原创 2013-10-24 17:41:34 · 829 阅读 · 0 评论 -
x86主板蜂鸣器操作
x86架构上蜂器原j原创 2014-06-05 10:52:25 · 4851 阅读 · 0 评论