您的位置:首页 > 运维架构 > Linux

linux内核编程笔记【原创】

2016-03-15 14:12 561 查看
DEFINE_MUTEX(buzzer_mutex);

mutex_lock(&buzzer_mutex);

mutex_unlock(&buzzer_mutex);

static void WriteNumber(const char *fileName, int number)

{

FILE *fp;

fp = fopen(fileName, "w");

if (fp == NULL) {

LCD_DEBUG("open %s error, errno %d\n", fileName, errno);

return;

}

fprintf(fp, "%d", number);

fclose(fp);

}

service aa /usr/bin/aa
class core
user root
group root
critical
onrestart restart aa
onrestart restart tt

#service bbd /usr/bin/bb
service bb /usr/bin/app_bbl_read
user root
group root
oneshot

【Shell脚本】怎样表示一个for循环

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

在此说一下我常用的两个结构:
1.
for i in $(seq 1 100); do
echo $i
done
2.
for (( i = 1 ; $i <= 100; i++ )) ;do
echo $i;
done

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

对于关闭抢占的内核接口

看内核接口是同步还是异步,比方说msleep就是异步接口,会休眠让出cpu

mdelay是忙等待,不会让出cpu

如果是同步接口的话,对于单核cpu,就不会出现多进程同时调用同一个接口出错的情况

如果是异步接口的话,就得具体问题具体分析,如果是仅仅避免多个进程调度同一个接口的情况的话,加信号量或者普通的锁就可以,不一定要加互斥锁,

如果是又有中间层调度接口,又有用户态上层调度接口,那么就另当别论了

spin_lock这种锁是用来多核cpu共同调用同个接口的问题,

mutex_lock这种是会休眠,同个cpu的互斥锁,如果是进程上下文就可以用,如果是中断上下文就不能用这种锁,因为这种锁会休眠,中断中是不允许休眠的

local_irq_save(flags);

local_irq_restore(flags);

spin_lock_irqsave(&iproc_bbl->lock, flags);

spin_unlock_irqrestore(&iproc_bbl->lock, flags);

网上大家经常碰到的不能连接问题:

请在运行-cmd输入netstat -n 查看5222端口是否在建立状态 ESTABLISHED,这个方法来源自网络,部落没有遇到过.另外,还有一个,就是清空本地本地DNS缓存,具体步骤如下:

在windows下运行运行菜单,开始->运行,输入"CMD"进行命令行窗口,然后输入 ipconfig/flushdns 按回车键

休眠唤醒调试

kernel/power/main.c中可以通过打印链表的信息,在休眠唤醒的时候将每个唤醒的源消耗的时间打印出来

dpm_run_callback() ----》drivers/base/power

中断中不可以加入打印

中断处理函数应该避免调用不可重入函数, 因为新的中断可能发生并打断正在执行任务中,如果当前任务调用了一些不可重入的函数,将会产生错误。

一些常用库函数如printf,malloc,free等都是不可重入函数,因为在函数中引用了全局变量, 这个道理因该很容易明白了吧?

例如, printf会引用全局变量stdout,malloc,free会引用全局的内存分配表。

arch/arm/kernel/debug.S:157: Error: too many positional arguments
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: