Linux驱动
沫沫的程序员
这个作者很懒,什么都没留下…
展开
-
linux模块编译的makefile
obj-m := add_sub.o KDIR :=/home/sink/work/src/linux/linux-2.6.38 all: make -C $(KDIR) M=$(shell pwd) modules clean: make -C $(KDIR) M=$(shell pwd) clean 其中KDIR为内核源码的路径add_sub.o是目标文件(源文件原创 2015-03-25 10:30:28 · 450 阅读 · 0 评论 -
Python调用C/C++
Python部分步骤:1. 导入ctypes。2. 调用ctypes.CDLL("/api.so") ,此处共享库文件放在根目录。3. 调用api.so中封装的函数add,得到返回值。#!/usr/bin/pythonimport ctypesplib = ctypes.CDLL('/api.so')print "result: %d" %(plib.add(1,2))C++部分#include原创 2015-03-25 10:27:50 · 406 阅读 · 0 评论 -
设备驱动中的并发控制
当多个进程在同一时间段访问同一资源时,就容易引起相应错误。为了保护临界资源,Linux有如下三种机制: 1.原子操作利用原子变量,再对原子变量进行操作时,不会被打断,故而可起到保护资源的目的。 2.自旋锁(spinlock)用自旋锁保护敏感的代码段,使它在执行该代码段期间不被打断。A.定义和初始化自旋锁 spinlock_t lock;原创 2015-03-25 10:25:05 · 345 阅读 · 0 评论 -
Linux模块调用模块
被调用模块 add_sub.c#include #include #include "add_sub.h"long add_int(long a,long b){ return a+b;}long sub_int(long a,long b){ return a-b;}EXPORT_SYMBOL(add_int);EXPORT原创 2015-03-25 10:25:27 · 484 阅读 · 0 评论