- 博客(33)
- 资源 (1)
- 收藏
- 关注
转载 UNIX 系统家族树的详细历史(图)
下面的图表显示今天的主要版本的Unix和类Unix操作系统的历史和发展道路。从此幅图可以清晰看到unix的家族史,其中让我注意一历史系统:SVR4,4.4BSD,FreeBSD,Linux,MAC OS X,Solaris.了解unix历史,让我们明白unix本身,产生更大的兴趣。
2015-07-30 20:04:30 1926
原创 键盘处理
键盘通过中断来提醒CPU产生了数据,按下与松开都会产生扫描码。 键盘产生的扫描码个数不同,从1个到4个,这应该是键盘设计时的问题。设计时没充分考虑向后兼容,结果大量生产后像修改也无法修改。这在软件行业处处可见。
2015-07-30 19:18:28 252
原创 linux内核bootsect.S和setup.S流程
bootsect.s流程将0x07c00的代码移动到0x90000处并跳转到0x90000处继续执行。 (0x07c00的代码BOIS加载的引导扇区)跳转后重新设置寄存器(设置段寄存器为0x9000,sp为0x4000-12,代码段,数据段,堆栈段都设置完毕)从内存0x00078复制原软驱参数表到0x94000-12处,然后修改表中的每磁道最大扇区数为18.加载setuo模块(后面的4个扇
2015-07-26 19:13:28 1296 2
转载 Linux系统调用
目录:1. Linux系统调用原理2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义系统调用1.系统调用原理系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特
2015-07-24 20:43:23 385
原创 Linux1.0系统调用列表
以下为linux1.0支持的系统调用sys_setup, sys_exit, sys_fork, sys_read,sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chm
2015-07-22 19:53:23 484
转载 adjtimex简介
Adjtimex介绍linux系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读
2015-07-22 19:32:12 1217
转载 Linux系统时间写入CMOS时钟
我们一般使用“date -s”命令来修改系统时间。比如将系统时间设定成2005年7月26日的命令如下。 #date -s 07/26/2005 将系统时间设定成下午11点12分0秒的命令如下。 #date -s 11:12:00 注意,这里说的是系统时间,是linux由操作系统维护的。 在系统启动时,Linux操作系统将时间从CM
2015-07-22 19:29:32 2057
原创 获取设置时间系统调用
名字 用处 time_t time(time_t *t) 获取系统时间,获取的为秒数 int stime(time_t *t) 设置系统时间,设置的为秒数 int gettimeofday(struct timeval *tv,struct timezone *tz) 设置系统时间,可获取秒数与微秒数 int settimeofday(struct timeval *t
2015-07-21 19:58:18 892
转载 x86—EFLAGS寄存器详解
鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EFLAGS寄存器有关的内容将直接从本文引用。众所周知,IA-32体系结构为通用系统(general system)提供了16个基本的程序执行寄存器:包含一些通用目的寄存器(General-purpo
2015-07-19 20:09:01 367
原创 cocos2dx 安卓下文件写入
windows下开发cocos2dx程序时,直接使用相对地址对程序进行读取与写入,并未出现问题,但在编译成安卓平台下的程序时出现无法写入问题。 以下是资料:CCFileUtils::sharedFileUtils()->getWriteablePath() 实际路径 http://blog.csdn.net/brook0344/article/details/24632559 注意CCDic
2015-07-18 19:59:57 887
转载 setuid seteuid setreuid 三个函数讲解
int setuid(uid_t uid) 1) 若进程具有超级用户权限,则setuid将实际用户ID、有效用户ID及保存的设置用户ID设置为uid 2) 若进程没有超级用户权限,但是uid等于实际用户ID或保存的设置用户ID,则setuid只将有效用户ID设置为uidint seteuid(uid_t uid) 1) 若进程具有超级用户权限,则setuid
2015-07-18 11:45:47 2728 1
原创 用户管理系统调用
名字 用处 getuid() 获取用户ID setuid() 设置用户ID getgid() 获取组ID setgid() 设置组ID getgroups() 设置附加组ID setgroups() 设置附加组ID
2015-07-18 11:43:03 483
转载 uname
主机信息 正如我们可以确定用户信息一样,程序也可以确定其运行的计算机的信息。uname命令提供了这些信息。uname同时也作为一个系统调用来在一个C程序中提供同样的信息,我们可以使用man 2 uname来查看详细的信息。许 多情况都需要主机信息。我们也许希望依据在网络中一个程序所运行的机器的名字来自定义其行为,也就是说,是一个学生的机器还是一个管理员的机器。为了授权 的目的,我们也许希望限制一个程
2015-07-17 19:52:12 559
转载 setgroups函数:设置组代码函数
函数说明:setgroups()用来将list 数组中所标明的组加入到目前进程的组设置中. 参数size 为list()的gid_t 数目, 最大值为NGROUP(32)。#include <grp.h>int setgroups(size_t size, const gid_t * list);返回值:设置成功则返回0, 如有错误则返回-1.错误代码: EFAULT:参数list 数组地址不合
2015-07-16 20:50:16 3693
转载 getgroups()函数:获取组代码函数
函数说明:getgroup() 用来取得目前用户所属的组代码. 参数size 为list() 所能容纳的gid_t 数目. 如果参数size 值为零, 此函数仅会返回用户所属的组数。#include <unistd.h> #include <sys/types.h>int getgroups(int size, gid_t list[]);返回值:返回组识别码, 如有错误则返回-1.错误代码
2015-07-16 20:45:58 3329
转载 Linux读取目录函数readdir以及inode结构简介
readdir 语法: struct dirent* readdir(DIR* dir_handle); 返回值: dirent结构 函数种类: 文件存取 内容说明 本函数用来读取目录。返回目录中的文件名称,读取不依照inode,依据的是dirent结构中的d_off inodein
2015-07-13 20:15:31 1105
原创 readdir(系统调用)
#include <stdio.h>#include <fcntl.h>#include <linux/types.h>#include <linux/dirent.h>#include <linux/unistd.h>int errno;_syscall3(int,readdir,uint,fd,struct dirent *,dirp,uint,count);int main(int a
2015-07-13 20:13:46 1893
转载 使用/dev/kmem读取内核变量的值
调试嵌入式Linux内核时,可能需要查看某个内核变量的值。/dev/kmem正好提供了访问内核虚拟内存的途径。现在的内核大都默认禁用了/dev/kmem,打开的方法是在 make menuconfig中选中 device drivers –> Character devices –>/dev/kmem virtual device support. 用 cat /proc/kallsyms |
2015-07-12 17:04:30 1880
原创 关于设备文件
设备管理是操作系统必须完成的任务。而linux用“设备也是文件的概念”十分出色的完成了该任务。 linux下对设备进行分类,主要分为3大类,字符设备,块设备,网络设备。字符设备主要完成输入输出功能,例如鼠标设备/dev/psaux,图形界面设备/dev/fb0。块设备是硬盘,软盘等辅助存储设备,对这些设备的读取写入都以512或512的倍数操作。主要用于完成文件系统,保存需要用到的程序或数据。网络设
2015-07-11 20:21:39 619
转载 全面的framebuffer详解
一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Framebuf
2015-07-09 20:26:04 1144
原创 Linux绘制图形
linux下可以通过打开/dev/fb0设备对界面绘图。但在打开/dev/fb0设备文件前,需要使linux进入以像素为单位的图形模式,而不是在字符为单位的字符模式下,不然打开dev/fb0会提示错误。(图形模式下一样存在字符界面,不过字符界面的写操作不在是往显存写字符,而是往显存写像素,这是由内核处理的不需我们处理)关于如何进入图形模式,可以参考() 打开/dev/fb0设备后,使用mmap映射
2015-07-09 19:27:02 1552
转载 [驱动] Framebuffer原理、使用、测试系列文章
上一篇文章居然加精了。现在继续将自己收集的一些资料和工作中的心得总结贴出来,我很多工作可能和大家没多大的通用性,所以只能挑有限的一些文章。如果有同学是做音视频编解码或图像处理的,可以交流下,我现在业余做这个。上年做过fb的驱动,收集了不少这方面的文章,不过建议大家还是要多看内核驱动代码,read the fucking code是真理。代码为主,其他为辅。首先第一篇是《Frameb
2015-07-08 20:48:35 457
转载 /dev/fb0入门练习(linux FrameBuffer)
转载于http://blog.csdn.net/zgrjkflmkyc/article/details/9402541大家都知道Unix/Linux系统是由命令驱动的。那么最基本的系统是命令行的(就是想DOS一样的界面)。X-Window-System是Unix/Linux上的图形系统,它是通过X-Server来控制硬件的。但有一些Linux的发行版在引导的时候就会在屏幕上出现图形,这时的图形是不可
2015-07-08 20:27:44 1865
转载 打开linux的framebuffer
在Debian的/dev/目录下找不到fb0,fb等设备,可以改一下/boot/grub/menu.lst 文件 把kernel那句加上个vga=0x0317即可title Debian GNU/Linux, kernel 2.6.26-2-686root (hd0,0)kernel /boot/vmlinuz-2.6.26-2-68
2015-07-08 20:07:04 1003
转载 linux 开启支持FrameBuffer--解决打开/dev/fb0失败的问题
FrameBuffer,可以译作“帧缓冲”,有时简称为fbdrv,基于fbdrv的console也被称之为fbcon。这是一种独立于硬件的抽象图形设备。FrameBuffer的优点在于其高度的可移植性、易使用性、稳定性。 使用Linux内核的FrameBuffer驱动(vesafb),可以轻松支持到1024X768X32bpp以上的分辩率。而且目前可得到的绝大多数linux版本所发行的内核中,已经
2015-07-08 20:05:26 2874 1
转载 浅析linux中鼠标数据读取
浅析linux中鼠标数据读取 luther@gliethttp:~$ ll /dev/input/mice crw-rw—- 1 root root 13, 63 2009-07-09 15:54 /dev/input/mice 我们就是去读/dev/input/mice设备节点,源码如下:#include <stdio.h>#include <errno.h>#include <fcnt
2015-07-07 20:46:11 2006
转载 如何在Linux下实现设备的配置(上)
如何在Linux下实现设备的配置(上) 本文是《如何在Linux下实现硬件的自动检测》的姊妹篇。将为您介绍在进行了设备检测,通过设备信息文件获得了设备对应的驱动程序,工作参数等信息后,如何对于几种最常见的设备进行配置、生成正确的配置脚本,以使设备正常工作。 Linux下设备的配置过程是指在检测到设备类型、设备当前工作参数等信息之后,使用这些信息来配置设备的驱动程序,工作方式等,(设备的检测过
2015-07-07 20:28:58 552
转载 Linux下/dev/mem和/dev/kmem的区别
Linux下/dev/mem和/dev/kmem的区别:/dev/mem: 物理内存的全镜像。可以用来访问物理内存。/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。作用:前者用来访问物理IO设备,比如X用来访问显卡的物理内存,或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一
2015-07-06 19:37:09 379
转载 Linux系统调用列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用
2015-07-06 18:58:49 384
原创 Linux下获取块设备大小
本文对linux下块设备文件全部适用。 linux下并没有专门用于获取硬盘设备大小的系统调用。因为完全不需要。linux下可以通过打开设备文件(块设备),执行lseek(fd,0,2)跳转到文件结尾处,通过lseek返回值获取设备文件大小。 linux内核启动时会获取硬盘的总大小,保存在内核中,对其读取或写入时都要对总大小做判断,读取位置是否已经超出最大值。而执行lseek(fd,0,2)会将当
2015-07-05 16:49:18 4885
转载 linux下如何模拟按键输入和模拟鼠标?
转贴请注明出处: blog.csdn.net/chenzhixin查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它
2015-07-05 12:20:54 416
原创 Linux字符界面下的鼠标操作
本文是关于如何在字符界面下获取鼠标信息的。 在阅读linux1.0源码中关于鼠标驱动的代码时,希望在linux下写一个测试程序,读取一下鼠标的数据,看与内核代码是否一致。 linux下操作设备一般都是通过打开设备文件,对设备文件进行读取或写入。鼠标在linux下也被抽象为设备文件,一样是通过open read close的接口操作。但在linux发现有许多鼠标的设备文件,在字符界面下有些鼠标
2015-07-05 12:07:08 2314
转载 linux中打开大文件的问题(大于4G)
前段时间写一个程序时遇到了打开一个大于4G的文件的问题,我开始是用标准C函数fopen来打开,在Windows下跑没有问题,但是移植到Linux下时,却出现打开文件错误,测试发现打开小文件没有问题,这可能跟系统的处理有关,仔细一想,Linux下不可能不支持大文件啊,应该有别的接口,所以上网查了一下,好不容易查到一个英文网页讲这个东西,叫LFS(Large file support),Linux的标准
2015-07-03 20:13:31 1103
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人