- 博客(13)
- 资源 (16)
- 收藏
- 关注
原创 杂项设备
一、杂项设备先看杂项设备结构定义linux/miscdevice.h:struct miscdevice { int minor; const char *name; const struct file_operations *fops; struct list_head list; struct device
2013-07-29 18:53:55 2027
原创 c strtok函数用法
strtok函数用于分割字符串,原型如下:char *strtok(char *str, const char *delim);str为指向欲分割的字符串,delime为分隔符,实例如下:#include #include int main(void){ char s[] = "aaa bbb ccc ddd"; char c[] = " "
2013-07-26 15:59:20 12912 1
原创 总线、设备和驱动属性文件
一、总线属性总线属性使用struct bus_attribute来描述,Linux给我们提供了一个宏,可以用来定义一个总线属性,那就是BUS_ATTR宏,该宏定义如下:#define BUS_ATTR(_name, _mode, _show, _store) \struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode,
2013-07-25 11:51:00 1587
原创 平台资源
平台总线设备除了用前面的platform_device_register函数去注册之外,经常会在平台下面看到platform_add_devices这样一个函数,platform_add_devices也是用于平台设备注册的,它是注册一组平台设备,函数原型如下:int platform_add_devices(struct platform_device **devs, int num);
2013-07-24 12:09:17 1138
原创 平台总线
platform总线是Linux虚拟的一条总线,总线类型定义如下:struct bus_type platform_bus_type = { .name = "platform", .dev_attrs = platform_dev_attrs, .match = platform_match
2013-07-23 21:20:50 1836
原创 总线、设备和驱动
一、总线Linux中,使用struct bus_type表示一条总线,该结构定义在linux/device.h中,先只看其中的两个字段,name表示总线的名字,比如usb、i2c、spi等,match方法用于匹配添加到该总线上的设备和驱动,如果匹配成功,则调用驱动中的probe函数。注册一条总线使用bus_register函数,原型如下:int bus_register(struct bu
2013-07-22 22:08:32 932
原创 printk
在编写应用程序时,我们可以通过printf打印输出一些信息用来调试程序,Linux内核也提供了类似的函数printk,和printf不同的是,printk提供了输出日志级别,日志级别有:KERN_EMERGKERN_ALERTKERN_CRITKERN_ERRKERN_WARNINGKERN_NOTICEKERN_INFOKERN_DEBUGKERN_EMERG
2013-07-20 23:29:18 2004
原创 线程
1. 创建线程创建线程使用pthread_create函数,函数原型如下:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);引用该函数需要包含头文件pthread.h,在编译时还需要加上-lpthread选项用来链接线
2013-07-17 21:40:45 807
原创 进程
进程1. system在Linux中,可以使用system函数启动一个新程序,从而创建了一个新进程,函数原型如下:int system(const char *command);system函数有点类似与在shell中执行一个命令,system会等待该程序执行结束,例如:#include #include int main(void){ pri
2013-07-12 22:15:37 833
原创 Linux字符设备驱动
1. 关于设备号设备号分主设备号和次设备号,主设备号用来标识设备所对应的驱动程序,由于同一个驱动程序可以支持多个设备,次设备号就是用来区分采用同一个驱动程序的不同设备。Linux内核中采用dev_t来描述设备号,该类型定义在linux/types.h中,阅读内核源码可以看出dev_t实质是一个32位无符号整型,其中使用高12位为设备号,低20位为次设备号,Linux提供了两个宏MAJO
2013-07-11 17:09:54 1166
原创 linux设备驱动之hello.c
#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT, "Hello, world\n"); return 0;}static void hello_exit(void){ printk(KERN_ALERT, "Goodbye, cr
2013-07-10 23:57:49 1162
转载 linux目录中递归删除同名文件夹
# 在当前文件夹及子文件夹下查找.svn文件夹并递归删除find . -name '.svn' -type d | xargs rm -rf
2013-07-09 17:45:08 9860
原创 c文件编程
文件流文件流有两种方式:一是文本流,此时数据写入为字符,这些字符组织为数据行,每一行以换行符结束,对于像int或double这类数据需要先转换成字符,才能写入文件中。二是二进制流,二进制流就是写入实际的值,例如double类型的值在文件中占8个字节。不管是文本流还是二进制流,在文件中都是一连串的自己组成,关键在于我们怎么去解释这些数据,例如字符'a',在文件中存储的是其ASCII码值97,
2013-07-05 10:21:00 1418
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人