嵌入式Linux中文站

linux syscall系统调用获取线程PID

阅读(93)

线程id Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,数据段等。 通过pthread_self()取得的线程id实际上是当前线程的descriptor地址

简单的linux杂项设备驱动的写法

阅读(204)

linux将设备驱动分成几大类:字符设备、杂项设备、块设备、网络设备 本篇文章介绍杂项设备驱动的编写,杂项设备与字符设备本质上没什么区别,但是写法和相关函数的使用上有区别。 除此之外杂项设备主设备号都为10,设备间通过次设备号来进行区分,与字符设备相比节约了主设备号。 杂项设备驱动编写模式一般如下: 在linux系统下一切皆文件,设备驱动同样秉承此大法。 对文件操作就少不了打开、读写、关闭等操作。 所以杂项设备驱动第一步就是进行文件操作函数的编写。 驱动模块最终需要加载到内核上运行,内核对文件的操作在内部

linux中fork()函数详解

阅读(156)

一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。 我们来看一个例子: [cpp] view plain copy /* *fork_test.c

Linux 系统错误码及其说明

阅读(62)

#defineEPERM 1/* Operation not permitted */ #defineENOENT 2/* No such file or directory */ #defineESRCH 3/* No such process */ #defineEINTR 4/* Interrupted system call */ #defineEIO 5/* I/O error */ #defineENXIO 6/* No such device or address */ #defineE2B

linux 用户空间与内核空间——高端内存详解

阅读(237)

摘要:Linux 操作系统和驱动程序运行在 内核空间 ,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本文旨在探讨内核空间的地址映射。 Linux内核地址空间划分 通常 32位Linux内核虚拟 地址空间 划分0~3G为用户空间, 3~4G为内核空间(注意,内核可以使用的线性地址只有1G) 。注意这里是32位内核地址空间划分,6

Linux/Unix ulimit命令详解

阅读(207)

Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限制。 下面我把某linux用户的最大进程数设为10000个: ulimit -u 10240 对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言, 最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,

Linux安装ARM交叉编译器步骤

阅读(194)

安装交叉编译环境 ==================================== gcc是linux环境下的asm和c语言编译器,生成的是可以在x86平台上运行的可执行程序; 而在开发板上运行的程序则需要arm平台专用的编译器,也称为交叉编译器; 交叉编译器可以由开发人员手工定制,也可用使用别人已经编译好的,比如arm-linux-gcc; (1)安装交叉编译器 ---------------------- $cd /home/zhang/tools/ $tar xzvf crosstools-

linux启动优化:mdev -s

阅读(58)

linux启动优化:mdev -s自从创建节点,启动时间比较长 标签: linux 优化 mdev it 分类: 工作中遇到的问题 转载请说明出处:http://control.blog.sina.com.cn/admin/article/article_add.php 近期工作中遇到的问题如下: linux启动后加载根文件系统时,会停留时间很久,跟人一种死机的感觉,于是老大要求优化linux的启动时间。 先第一步做的是给linux内核启动加上时间戳,方法:配置linux内核 make menuconfi