摘要: #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 阅读(227) 评论(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 阅读(189) 评论(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 阅读(1582) 评论(0) 推荐(0) 编辑
摘要: 一 移植环境Linux version 2.6.24.4 + u-boot1.3.4 +arm-linux-gcc 3.4.1二 目录结构 u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成; u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。 各个部分的流程图如下:三: 源码分析u-boot的stage1入口点分析一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。现在我们的u-boot链接文件就是u-boot-. 阅读全文
posted @ 2013-10-31 14:46 HEYP 阅读(185) 评论(0) 推荐(0) 编辑