
Linux/Unix ABC
文章平均质量分 93
xuexingyang
wifi
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POSIX 线程详解
<br /><br />线程是有趣的<br />了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。<br />那么为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局变量。如果曾用 fork转载 2010-10-20 17:16:00 · 1079 阅读 · 0 评论 -
工作点滴(四)Linux下合并二进制文件
0. 引言在平时的Linux嵌入式开发中,我们常见的工作流程如下:搭建交叉编译和开发环境--->模块开发--->build image--->release image在最后一个阶段,即Image release阶段中,一般我们都是生成如下几个flash分区用的Image镜像文件,烧录进flash中对应的block中,如下图所示:在开发阶段,不同的team或者开发人员就针对原创 2011-11-07 11:10:00 · 4284 阅读 · 0 评论 -
工作点滴(六)由Linux进程调度算法说开去之DWRR算法
0 引言Linux调度算法中最基本的一类就是基于优先级的调度。这是一种根据进程的价值和其对处理器时间的需求来对进程分级的思想。优先级高的进程先运行,低的后运行,相同优先级的进程按照轮转方式进行调度(Round Robin方法,一个接一个,重复进行)。在包括Linux在内的某些系统中,优先级高的进程使用的时间片也较长。调度程序总是选择时间片未用尽而且优先级最高的进程运行。用户和系统都可以原创 2011-11-29 23:01:03 · 4483 阅读 · 0 评论 -
理解inode
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。===================================理解inode作者:阮一峰转载 2011-12-15 21:32:09 · 1398 阅读 · 0 评论 -
Linux下常用的函数调用栈规范
我们都应该知道,高级语言的函数调用过程中,有“栈”这么一个概念,被调用函数的局部变量是存放在栈中的,函数调用的参数也是通过栈传递的。那么,调用函数是怎么把各种数据压入栈中,被调用函数又是怎么对栈进行操作以获取必要的数据呢?函数调用发生完毕之后,谁又负责清理这个栈?这就用到了函数调用栈规范!函数调用栈规范是指编译器的一中“约定”,他规定了调用者如何传递参数,被调用者如何获取参数,调用完成后怎么清转载 2012-03-12 20:50:05 · 1577 阅读 · 0 评论 -
Android 的用户层 uevent处理机制
目录(?)[-]原理分析实现机制总结前言 前段时间移植 wifi 驱动到 android 的内核上,发现 firmware 的加载始终出错,问了几个人,都不是很了解,没办法,只好自己研究一下。原理分析 从本质上来说, firmware 需要做的事情包括两件:1, 通知用户态程序,我需要下载 firmware 了;转载 2013-03-13 17:25:55 · 1416 阅读 · 0 评论 -
Firmware 加载原理分析
前言 前段时间移植 wifi 驱动到 android 的内核上,发现 firmware 的加载始终出错,问了几个人,都不是很了解,没办法,只好自己研究一下。原理分析 从本质上来说, firmware 需要做的事情包括两件:1, 通知用户态程序,我需要下载 firmware 了;2, 用户态程序把用户态的数据 copy 到内核层;转载 2013-03-13 18:47:50 · 2634 阅读 · 0 评论 -
Why and How to Use Netlink Socket
From Linux JounalWhy and How to Use Netlink Socket By Kevin He on Wed, 2005-01-05 02:00. SysAdminUse this bidirectional, versatile method to pass data between kernel and user space.Due t转载 2013-03-13 18:54:29 · 2057 阅读 · 0 评论 -
Linux netlink 机制
netlink作为一种用户空间和内核空间通信的机制已经有一定年头了,它不光为了内核和用户通信,还可以作为IPC机制进行进程间通信。其实netlink定义了一个框架,人们可以基于这个框架用它来做可以做的任何事情,linux中不乏这些类似的好的框架。它们的共同点就是内核并不管它们能做什么,然而它们真的很强大,往往可以做到的事情很多,这就是内核不问策略只管实现机制,所有策略让用户实现,netlink框架转载 2013-03-13 19:00:03 · 3879 阅读 · 0 评论 -
Zebra-VTYSH源码分析和改造(一):Zebra软件架构
1. Zebra 功能认识ZEBRA 提供了一个类Cisco命令行的分级多用户命令解析引擎--VTY(Virtual Terminal)。它是类似于Linux Shell的虚拟终端接口,负责对访问的安全验证、数据缓冲、命令解析、模式切换和命令调用。用户通过VTYSH的每一次接口访问都会发起一个对应的VTY。VTY会根据用户优先级初始化并挂载相应的命令集Command Node。Comm原创 2011-11-01 17:09:34 · 14557 阅读 · 4 评论 -
工作点滴(五)Linux多线程编程中的信号问题
0 引言由于工作保密原因,只简单介绍下背景:本系统中有一个进程A,A中又分别生成5个线程分别为a,b,c,d和e。其中,a是主线程(也可以叫做进程A),采用epoll(select)通过socket负责和其他进程间的通信。b是计时器线程,通过alarm调用产生信号中断来进行计时。(主要是通过类似如下代码进行) signal(SIGALRM,timer_handle)原创 2011-11-17 16:16:51 · 2544 阅读 · 0 评论 -
epoll使用详解(精髓)
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __原创 2010-10-20 16:02:00 · 1321 阅读 · 2 评论 -
深入分析 Linux 内核链表
<br /><br />一、 链表数据结构简介<br />链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。<br />通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链原创 2010-10-20 17:12:00 · 889 阅读 · 0 评论 -
list.h头文件分析
序:觉得这哥们写的不错,再转来给大家看。双链表的应用在内核中随处可见,list.h头文件集中定义了双链表(struct list_head结构体)的相关操作。比如这里的一个头文件中就有大量的struct list_head型的数据。关于list.h的分析,网上资料很多,这里只是记录我在分析list.h中遇到的问题。0.struct list_head结构体可能这样写,更让我们习惯:1struct list_head {2struct list_head *next;3struct list_head *pr转载 2010-10-21 17:29:00 · 3663 阅读 · 2 评论 -
原来Linux socket不是那么简单
<br />这段时间搞了个socket通信,设计到fd,epoll,碰到了些困难,发现Socket里面还是有些东西不是很了解的。<br />特地看看,记录下来.<br /> <br /><br />通常,socket编程总是Client/Server形式的,因为有了telnet,先不考虑client的程序,先写一个支持TCP协议的server端,然后用telnet作为client验证我们的程序。<br />TCP server端的基本流程 <br /> 想象你自己是个小大佬,坐办公室(什么样的原创 2010-10-25 17:07:00 · 2162 阅读 · 1 评论 -
utf-8和gbk之间相互转换
经过项目测试时正确的:#include //Added for convert between utf-8 to gbk 20110314 by XYangint code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen) { iconv_t cd; int rc; char **pin = &inbuf; char **pou原创 2011-03-14 14:09:00 · 1847 阅读 · 1 评论 -
积累的一些UNIX网络编程的知识
网络编程常见问题总结 (一) 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》 非阻塞IO和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明 基本概念:socket的阻塞模式意味着必须要做完IO操作(包括原创 2011-04-20 11:11:00 · 1337 阅读 · 0 评论 -
TCP终止连接时状态分析
我们都知道TCP连接时需要三次握手,这个我们大家都很熟悉。但是平时的工作中,会经常出现各种各样的连接状态,特别是在关闭TCP连接时出现××_WAIT状态,这里就简要分析下,供参考。TCP终止连接需要4个分节,简称四次握手。首先要明确的概念是:当一对TCP sock原创 2011-08-01 10:18:13 · 1781 阅读 · 0 评论 -
Linux IPC总结(全)
IPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支原创 2011-08-02 11:25:55 · 19422 阅读 · 6 评论 -
工作点滴(三)Linux之chmod和umask使用。
0 引平时在linux下面对文件和目录操作时,常用到chmod,而对umask用的不多,现在记录之。1 介绍chmod umask和chmod是配套的,命令部分总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个原创 2011-10-13 16:02:16 · 1630 阅读 · 0 评论 -
Linux man 后面的数字含义及作用
平时我们开发中碰到陌生的命令或者函数,通常会找man来帮助下,通过man后面加的数字可以看到关于命令或者函数更深层次的东西。或者通过比较命令和函数加深了解你需要的知识。如下是man后面的数字代表的含义。Section 1user commands (i原创 2011-10-19 14:59:43 · 4816 阅读 · 0 评论 -
远程编译 BlueZ ARM交叉编译环境配置(-)----PASS
(Ref.:http://www.itnose.net/detail/6166988.html )最终在211/212 server中验证完毕。tar.gz :tar -xzvf 1.Compile zlibwget http://zlib.net/zlib-1.2.8.tar.gz配置:./configure --pr原创 2016-02-26 17:12:25 · 2080 阅读 · 0 评论