11 2013 档案

摘要:小小地跟踪下read函数,从ssize_t read(int fd, void *buf, size_t count)到DATASHEET一调到底,见证内核的分层模块化。--内核服务例程开始提供服务----fs/read_write.c--SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ struct file *file; ssize_t ret = -EBADF; int fput_needed; file = fget_light(fd, &fput_needed... 阅读全文
posted @ 2013-11-26 15:31 HEYP 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:本文档描述libusb的API,以及如何开发USB应用。1 介绍1.1 概览本文档描述libusb-0.1的API和USB相关内容。1.2 当前OS支持Linux 2.2或以上FreeBSD/NetBSD/OpenBSDDarwin/MacOSX2 API2.1 设备与接口一个设备可能有多个接口,所以一个句柄可以返回多个接口实例。不要忘记调用 usb_claim_interface() 。2.2 超时总是以毫秒为单位。2.3 数据类型同时使用有抽象结构和非抽象结构来保持可移植性。2.4 同步所有libusb v0.1的函数都是同步的,这意味着操作完成或超时前不会返回。异步操作从libusb v 阅读全文
posted @ 2013-11-13 17:28 HEYP 阅读(1388) 评论(0) 推荐(0) 编辑
摘要:这两天发现手头一个usb指纹头出现了一点状况,若libusb以同步方式发送bulk transfer出现阻塞。经过测试发现跟timeout有些关系:若timeout为0(无timeout),不会阻塞;若timeout为1000或者2000,则会。另外,若采用异步方式传送bulk transfer,则不会阻塞。同步方式libusb_bulk_transfer(devh, ep_bulk, buf, CAM_BUF_SZ, &len, timeout);进入libusb研究,发现libusb是采用异步方式来实现的。在do_sync_bulk_transfer中:staticint do_s 阅读全文
posted @ 2013-11-13 17:16 HEYP 阅读(6148) 评论(0) 推荐(0) 编辑
摘要:笔者曾得到一个类似于加密“狗”的USB设备,要使之在Linux下正常工作。然而,通过一个名为USBView的小程序判断,Linux内核无 法驱动这个USB设备,并且在“Linux USB Working Devices”的列表中也没有找到该设备,这意味着只有很少的人在使用这种类型的 USB设备。 在Linux的/proc/bus/usb/devices文件中,有这个USB设备的一些信息: T: Bus=01 Lev=02 Prnt=03 Port=02 Cnt=01 Dev#=4 Spd=1.5 MxCh=0D: Ver=1.00 Cls=ff(vend.) Sub=00 Prot=ff M. 阅读全文
posted @ 2013-11-13 16:40 HEYP 阅读(2399) 评论(0) 推荐(0) 编辑
摘要:libusb must be mounted usbfs今天通过libusb访问一个HID的设备,一调用USBDEVFSCLAIMINTERFACEioctl就返回-1设备忙, 找了一下午原因也没有找到, 快到下班的时候, 发现了一篇文章Porting Libusb for Android on the Beagleboard in 5 steps提到 需要把设备加载到usbfs上,结果加载了usbfs设备就能正常访问了。在网上搜了一圈,发现libusb就是通过usbfs或usbdevfs来链接USB设备,所以在使用之前 必须加载usbfs到/dev/bus/usb或/proc/bus/usb 阅读全文
posted @ 2013-11-13 16:31 HEYP 阅读(730) 评论(0) 推荐(0) 编辑
摘要:Better-zyy博客园首页博问闪存新随笔联系订阅管理随笔-20 文章-6 评论-1[转载]Linux TCP/IP 协议栈源码分析一.linux内核网络栈代码的准备知识1.linux内核ipv4网络部分分层结构:BSD socket层:这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,还需要保留些额外的参数 阅读全文
posted @ 2013-11-11 11:19 HEYP 阅读(344) 评论(0) 推荐(0) 编辑
摘要:socket结构体传输时,字符串结构体成员要使用数组定义,如:typedef struct{int id;char info[100]; }Data_info;不能使用指针,send发送的是一块连续的内存,结构体带指针的不能直接发送,因为指针传递到接收端就变成野指针,指针的话实际上结构体内存中存的只是个指针,即是个32位的unsignedint值,但要是数组的话,那么就是一块内存。typedef struct{int id;char *info; //这样是错的}Data_info;备注:sizeof(Data_info)==4,说明数组在结构体存的是地址,但是传输时是一整段内存。demo测试 阅读全文
posted @ 2013-11-08 11:09 HEYP 阅读(2260) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #include #include #include typedef struct worker{ void *(*process)(void *arg); void *arg; struct worker *next; }CThread_worker;typedef struct{ pthread_mutex_t queue_lock; pthread_cond_t queue_ready; CThread_worker *queue_head; int shutdown; pthread_t *threadid; int ... 阅读全文
posted @ 2013-11-07 15:48 HEYP 阅读(228) 评论(0) 推荐(0) 编辑
摘要:服务端:#include#include#include#include#include#include#include#include#define MAXLINE 4096int main(int argc, char** argv){ int listenfd, connfd; struct sockaddr_in servaddr, addr; char buff[4096]; int n; socklen_t addr_len; char peerip[18]; if( (listenfd = socket(AF_IN... 阅读全文
posted @ 2013-11-06 16:22 HEYP 阅读(268) 评论(0) 推荐(0) 编辑
摘要:——本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为13) 在主线称中启动线程2,打印“this is thread2”,并将g_Flag设置为24) 线程序1需要在线程2退出后才能退出5 阅读全文
posted @ 2013-11-06 11:37 HEYP 阅读(399) 评论(0) 推荐(0) 编辑
摘要:一个困扰我两天的问题,Google和Baidu没有找到解决方法!此文为记录这个问题,并给出原因和解决方法。1、Unix domain socket简介unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API于在不同主机上执行客户/服务器通信所有的API(套接字API,如AF_INET、AF_INET6等类型的API)相同。unix域协议可以视为是进程之间本地通信IPC的一种。unix域提供两类套接口:字节流套接口(类似TCP)和数据报套接口(类似UDP)。使用Unix域套接口的理由有三:Unix域套接口往往比位于同一主机的TCP套接口快出一倍。Unix域 阅读全文
posted @ 2013-11-06 11:35 HEYP 阅读(190) 评论(0) 推荐(0) 编辑
摘要:“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、list 阅读全文
posted @ 2013-11-06 11:33 HEYP 阅读(277) 评论(0) 推荐(0) 编辑
摘要:pthread_detach 创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid) 但是调用pthread_join(pthread_id)后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此,比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而.. 阅读全文
posted @ 2013-11-06 09:05 HEYP 阅读(420) 评论(0) 推荐(0) 编辑
摘要:POSIX 线程详解一种支持内存共享的简捷工具POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins 向您精确地展示在编程中如何使用线程。其中还涉及大量幕后细节,读完本系列文章,您完全可以运用 POSIX 线程创建多线程程序。评论:Daniel Robbins(drobbins@gentoo.org), 总裁/CEO, Gentoo Technologies, Inc.2000 年 7 月 01 日内容线程是有趣的了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核 阅读全文
posted @ 2013-11-05 20:15 HEYP 阅读(426) 评论(0) 推荐(0) 编辑
摘要:太久没写东西,用惯了电脑拼音,有时想在书本上写点字经常想不起笔画,大脑思维萎缩,人也多了许多浮躁。静下心,理清头绪,计划做事情有条不紊,从容对人对事。不要去空想,对自己要负起责任。 事有轻重,当前以工作为重中之重。今天发生的事对我是个教训很有代表性,同事来找设备,作为开发人员对自己开发的平台基本参数都忘记了,做事不严谨在混日子,吸取教训。做完的工作和事情要善于总结,好记性比不过烂笔头,何况自己是浆糊脑袋。总结打算按这个思路:平台描述,软硬件配置,所做工作任务,任务周期,任务完成情况,遇到的问题和解析,相关资源及帮助,备注对其中技术点单独剖析引申。梳理知识框架按照这个步骤执行:uboot ... 阅读全文
posted @ 2013-11-05 17:35 HEYP 阅读(208) 评论(0) 推荐(0) 编辑
摘要:问题的提出是前一阵和lgx聊天发现,一个被strip的module也可以被成功的insmod,当时知道一些insmod 的原理觉得不太可能,因为一个正常的module文件其实就是标准的ELF格式object文件,如果将他的 symtab strip掉的话,那些printk这类的symbol将不能被正常的解析,理论上是不可能加载成功的,于是 做了一个简单的module在turbo7上测试了一把,modutils的版本是2.4.6,出人意料的是竟然成功的被加 载,真是觉得真是不可思议,因此觉得有必要研究一下insmod的具体实现,最好的方法当然是go to the source先说说关于modul 阅读全文
posted @ 2013-11-02 17:17 HEYP 阅读(1596) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示