Linux
yilonglucky
这家伙很懒,什么都没留下
展开
-
linux kernel module - hello world
编写设备驱动是学习kernel的门路之一, 迈入驱动编程的第一堂课可能就是编写内核模块。第一步,编写源文件hello.c,如下#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "hello,world1\n");原创 2011-09-21 17:55:47 · 917 阅读 · 0 评论 -
冒泡排序
#include #include //int data[] = {5,2,1,3,4};int data[] = {2,4,6,5,3,1,0};//int data[] = {0,1,2,3,4,5};//int data[] = {6,5,4,3,2,1,0};int bubble_sort(int data[],int n){ int temp; int i, j,原创 2016-01-22 11:44:18 · 445 阅读 · 0 评论 -
多线程模拟-爸爸放橙子给女儿吃,妈妈放苹果给儿子吃
模拟这个游戏:有一个空盘子一次只能放入一个水果。爸爸放入一个橙子,只有女儿会拿起来吃。妈妈放入一个苹果,只有儿子会拿起来吃。依次生成这4个线程,利用信号量来同步这4个线程,利用互斥锁来解决爸爸和妈妈争用空盘子的冲突,防止死锁。当儿子一共吃过8个苹果时,结束整个游戏。#include #include #include #include #include #include原创 2016-01-21 15:56:21 · 3437 阅读 · 0 评论 -
线程等待与线程的返回值
此demo中,线程随机生成一个数,并将此随机数通过返回代码传递给主进程。主进程获取到该随机数后打印出来。需要说明的是:线程的传入参数和返回值类型都是void*,所以可以通过强制类型转换传递任何类型。#include #include void *fn(void *arg){ char num; srand(time(0)); num = rand()%100; sleep原创 2016-01-21 14:53:05 · 999 阅读 · 0 评论 -
传递参数给线程
在demo1的基础上,添加了传递参数给线程。这样可以更明显地看到,进程依次创建了线程,但是线程的执行顺序却是不固定的。#include #include void *fn(void *arg){ printf("thread #%u : get arg=, my PID=%d\n", \ (unsigned int)pthread_self(), (int)arg, getpi原创 2016-01-21 13:40:11 · 437 阅读 · 0 评论 -
创建线程与获取线程标识
此demo中进程创建了一批线程,可以看到:所有线程共享进程ID,但是有自己的线程ID。创建成功的线程的执行顺序是不确定的。原创 2016-01-21 11:53:22 · 1107 阅读 · 0 评论 -
多线程之计算文件单词数量-线程参数-互斥锁访问共享区
以下代码只是为演示多个线程使用互斥锁访问共享区,未考虑效率因素。不过可以自行修改验证,2个线程比1个线程所花时间在用户态更短,在内核态较多,耗费时间就是在2个线程争用mutex锁上。#include #include #include pthread_mutex_t c_lock; /* count lock */long total_words = 0;int main(原创 2015-12-31 14:19:04 · 839 阅读 · 0 评论 -
shell编程之for循环-写指定数量的单词到文件
脚本带1个参数,指定往文件写入多少个单词。生成文件后可以用系统自带的命令wc啦检验。(wc,word count程序,一般系统已集成)#!/bin/bashFILE=./file#echo "in $#"if [ $# -eq 1 ]then rm -f $FILE i=1 while [ $i -le $1 ] do echo -n "one " >> $FILE原创 2015-12-31 13:39:06 · 1648 阅读 · 0 评论 -
理发师问题-多线程-信号量-互斥访问共享区
理发师问题,多线程,信号量原创 2015-12-31 11:38:56 · 1778 阅读 · 0 评论 -
打印mac地址
%pM打印冒号分隔的MAC地址,%pm打印MAC地址的16进制无分隔 如 printk(“%pM %pm\n”, mac, mac) output: 2c:00:1d:00:1b:00 2c001d001b00原创 2015-12-28 17:52:21 · 1180 阅读 · 0 评论 -
进程间通信之TCP demo1
来一个简单的demo,TCP server开启后等待其他进程来连接,连接成功后把收到的数据打印出来,然后断开连接。直到收到的数据是quit字符串时为止。TCP client运行后,向指定IP地址和端口发送一个字符串,随机断开连接退出。原创 2015-12-28 17:16:40 · 435 阅读 · 0 评论 -
ubuntu如何安装iperf3
sudo add-apt-repository "ppa:patrickdk/general-lucid"sudo apt-get updatesudo apt-get install iperf3ubuntu下运行以上3条命令,就可以成功安装iperf3。原文地址:http://stackoverflow.com/questions/28598394/inst转载 2015-12-11 10:44:04 · 14181 阅读 · 0 评论 -
Linux v2.6内核编程之/sys/中的kobject
看到内核中Greg Kroah-Hartman的关于object的样例,再精简一下,用来演示怎样在sys文件系统中建立文件夹与文件结点,为自己的驱动添加一种用户接口。 源文件mykobject.c/* * Sample kobject implementation * Released under the GPL version 2 only. */#include原创 2015-05-18 14:58:47 · 610 阅读 · 1 评论 -
进程间通信之共享内存shared memory
共享内存是一种简单而高效的进程间通信方法。管道,消息队列等通信方法需要在主存和用户空间之间进行4次数据复制,而共享内存只需要2次。分析如下: 管道,消息队列等: 第一次:数据产生后需要写入进程A的用户空间 第二次:把数据从进程A的用户空间复制到内核空间中 第三次:把数据从内核空间复制到进程B的用户空间中 第四次:把数据从进程B的用户空间写入输出文件 共享内存的实现是将内核空间的物理内存映原创 2015-04-15 11:24:56 · 1588 阅读 · 0 评论 -
修改svn的log信息
刚刚commit了一次,结果-m后面的引号里还没填写log信息就回车了。网上各种搜怎么添加log,终于找到一行命令:svn propset --revprop -r 3204 svn:log "1.添加WIFI SDIO 控制器驱动 2.修正上一版本出现的错误"万幸,万幸原创 2012-10-23 11:42:39 · 509 阅读 · 0 评论 -
sizeof 利用预编译查看数据结构占用内存空间
偶然看到很久以前的一个代码片段,分享出来。代码功能:展示各种数据结构占用的内存空间大小要点1:sizeof是编译时转换为数字的,运行时已经相当于常量要点2:宏变量转换字符串#include <stdio.h>#include <stdlib.h>#define SPACE(T) printf("%20s:%5d B \n",#T,sizeof(T...原创 2019-06-17 16:00:34 · 826 阅读 · 0 评论