- 博客(21)
- 资源 (31)
- 收藏
- 关注
转载 Kconfig、Makefile、.config 与编译内核模块添加 -- linux内核
本文参考友善之臂的MICRO2440用户手册毛毛同学今天学习了驱动程序模块的安装与卸载,在这个过程中毛毛发现,内核的目录中有许多的Kconfig、Makefile文件,但是毛毛不知道为什么需要这些文件,这些文件又是用来做什么的。下面我们就和陶毛毛同学一起来学习下这些文件的作用是什么。 首先我们来学习什么Makefile,什么是Kconfig ,什么是.config Makefile
2014-09-29 15:26:54 3317
原创 hello.c内核模块编译 -- linux内核
Linux开发模块,在本机上看调试信息的方法走通了。当前版本2.6.32-32-genericuname –r可以查询这里取module_param()作为例子。该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#define module_param(name, type, perm) module_param_named(name, name, type, perm)其中使用了 3个参数:要传递的参数变量名, 变量
2014-09-29 11:54:35 1234
转载 inux协议栈skb操作函数 -- linux
接字缓冲区函数函数名功能函数形成参数描述skb_queue_empty检查队列是否为空int skb_queue_empty (struct sk_buff_head * list)list为队列头如果队列为空返回真,否则返回假skb_get
2014-09-23 17:26:03 952
转载 netlink中常用宏定义 -- netlink
在linux/netlink.h中定义了一些方便对消息进行处理的宏,这些宏包括:#define NLMSG_ALIGNTO 4 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )宏NLMSG_ALIGN(len)用于得到不小于len且字节对齐的最小数值。#define NLMSG_LENGT
2014-09-23 17:23:24 1038
转载 sk_buff 定义及其操作
1. sk_buff 结构体可以看出 sk_buff 结构体很重要,sk_buff --- 套接字缓冲区,用来在linux网络子系统中各层之间数据传递,起到了“神经中枢”的作用。当发送数据包时,linux内核的网络模块必须建立一个包含要传输的数据包的sk_buff,然后将sk_buff传递给下一层,各层在 sk_buff 中添加不同的协议头,直到交给网络设备发送。同
2014-09-23 11:05:28 4712
转载 用户空间与内核空间数据交换程序(netlink) -- linux内核
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSO
2014-09-22 19:43:05 858
转载 socket的内核和上层通信机制(netlink) -- linux内核
需要在linux网卡驱动中加入一个自己的驱动,实现在内核态完成一些报文处理(这个过程可以实现一种零COPY的网络报文截获),对于复杂报文COPY下必要的数据交给用户态来完成(因为过于复杂的报文消耗CPU太大,会导致中断占用时间太长)。因此需要一种内核和用户态配合的通信机制,尝试了很多方式都不太理想,最后采用netlink+内存映射的模式很好的解决了这个问题。Netlink是一种采用socket通信
2014-09-22 17:04:01 3085
转载 内核模块编译、加载&卸载及查看运行结果 -- linux内核
花了一晚上的时间才搞出这么点名堂,有点丢人。不过丢人就丢人吧,总归得把这仅有的成果记录下来。[环境]Vmware5.5 + Fedora8(Kernel:2.6.23.1-42.fc8-i586)===================================================[源代码hellomod.c]这里我仅使用了最简单的代码HelloWorld#
2014-09-22 15:45:22 1071
转载 c语言获取shell脚本输出 -- 管道方式
1. 前言Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们可能
2014-09-19 17:56:17 2554
转载 退出返回值 - sh
写一段hello world:1 // filename: main.c2 3 #include 4 int main(void)5 {6 printf("hello wolrd!\n");7 return(-1); 8 }编译执行:gcc main.c && ./a.out现在我们看看在当前shell中返回上一个执行过程的返回
2014-09-19 11:22:28 1506
转载 判断文件是否存在 - sh
shell判断文件是否存在 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "$my
2014-09-19 11:20:36 1316
转载 字符串分割 -- sh
Linux 的字符串截取很有用。有八种方法。假设有变量 var=http://www.hao.com/123.htm一 # 号截取,删除左边字符,保留右边字符。echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.hao.co
2014-09-17 14:30:10 1831
转载 数组中获取字符串 - bash
shell中数组的下标默认是从0开始的1。将字符串放在数组中,获取其长度#!/bin/bashstr="a b --n d"array=($str)length=${#array[@]}echo $lengthfor ((i=0; ido echo ${array[$i]}done执行结果:[oracle@99bill-as
2014-09-17 10:26:22 1313
转载 Samba的安装配置和使用 -- unbuntu
Samba服务在Ubuntu服务器版本中默认并没有安装。1. Samba软件包的安装使用源安装,在终端中输入如下命令:#sudo apt-get install samba#sudo apt-get install smbclient2. Samba服务器的启动、关闭和重启启动Samba服务器只需执行如下命令:#sudo /etc/i
2014-09-04 17:15:44 739
转载 SSH设置 -- ubuntu
网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务。最终成功的方法如下: Ubuntu 下安装 OpenSSH Server 是无比轻松的一件事情,需要的命令只有一条: sudo apt-get install openssh-server
2014-09-03 14:36:02 660
转载 学习笔记2 -- libcurl
代理 什么是代理?Merrian-Webster的解释是:一个通过验证的用户扮演另一个用户。今天,代理已经被广泛的使用。许多公司提供网络代理服务器,允许员工的网络客户端访问、下载文件。代理服务器处理这些用户的请求。 libcurl支持SOCKS和HTTP代理。使用代理,libcurl会把用户输入的URL提交给代理服务器,而不是直接根据URL去访问远程资源。
2014-09-01 20:05:39 1105
转载 学习笔记1 -- libclurl
这是一篇介绍如何使用libcurl的入门教程。文档不是逐字逐句按原文翻译,而是根据笔者对libcurl的理解,参考原文写成。文中用到的一些例子,可能不是出自原文,而是笔者在学习过程中,写的一些示例程序(笔者使用的libcurl版本是:7.19.6)。出现在这里主要是为了更好的说明 libcurl的某些api函数的使用。许多例子都参考libcurl提供的example代码。原文example中的提供
2014-09-01 19:50:14 946
转载 curl_slist_append增加http header -- curl
CURL的中文资料比较少,下面是实际工作中用到,摸索出来的,记录之。1、增加HTTP Header curl_slist *plist = curl_slist_append(NULL, "Client-Key:m-5be02cd9ddfb11dcaf9700142218fc6e"); curl_slist_append(plist, "username:winter_44
2014-09-01 19:07:55 21052
转载 libcurl基本使用 -- libcurl
前段时间写了个linux下的多线程下载工具, 使用到了强大的libcurl库. 现将libcurl的使用总结如下:关于libcurl的文章网络上很多, 这里不再描述. 以下是如何使用libcurl的例子.一、常用函数 1) libcurl的全局初始化及释放 CURLcode curl_global_init(long flags)
2014-09-01 18:58:43 1288
linux_下_C_语言_连接_MySQL数据库_(详细注释).txt
2012-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人