易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 0.12内核

Linux使用从1970年1月1日0时0分0秒起到开机时经过的秒数作为开机时间, 是在main.c和mktime.c中进行初始化的.
1. linux/init/main.c
/*
 * read current time from CMOS.
 * 访问CMOS需要通过端口0x70, 0x71进行.
 * 读数据时,先用OUT指令向0x70发送要读取字节的偏移位置值, 然后用IN指令从0x71读数据.
 * 写数据时也一样, 先向0x70发送偏移值, 然后用OUT指令向0x71端口发送数据.
 */
#define CMOS_READ(addr) ({ \
             outb_p(0x80|addr,0x70); \
             inb_p(0x71); \
             })
/*
 * CMOS 字节信息:
 * 0x00 - 当前秒. 0x02 - 当前分. 0x04 - 当前小时. 0x06 - 一周中的当前天.
 * 0x07 - 一月中的当前日期. 0x08 - 当前月份. 0x09 -  当前年份
 */
/* 将取得的BCD码转换为数值 */
#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
/*
 * 初始化开机时间, 由main()调用.
 */
static void time_init(void)
{
     struct tm time;
     do {
           time.tm_sec = CMOS_READ(0);        /* 读取当前秒值 */
           time.tm_min = CMOS_READ(2);        /* 读取当前分值 */
           time.tm_hour = CMOS_READ(4);
           time.tm_mday = CMOS_READ(7);
           time.tm_mon = CMOS_READ(8);       /* 读取当前月份 ( 1 - 12) */
           time.tm_year = CMOS_READ(9);
     } while (time.tm_sec != CMOS_READ(0));  /* 如果秒值已经发生变化就重新读一遍,
 &nbs


相关文档:

Linux内核DRM实现分析——基于i915

1  接口
     我们先看看i915_drv.c里面申明的driver变量:
static struct drm_driver driver = {
 /* don't use mtrr's here, the Xserver or user space app should
  * deal with them for intel hardware.
  */
 .driver_features =
     DRI ......

linux学习笔记06

(AIX命令)iostat命令主要通过观察物理磁盘的活跃时间以及他们的平均传输速度,监控系统输入/输出设备负载.
iostat [间隔时间] [打印次数]
exp: iostat 5 2
ps命令是UNIX系统中最常见的命令,它主要显示系统中关于进程的统计和状态信息,如进程ID,I/O行为以及CPU利用率等.
显示10个消耗CPU最多的进程:
ps aux |sort ......

Linux协议栈源码分析读书笔记(一)

   今天读了本书的第一章.这一章初步介绍了Linux内核的总体布局,也就是总体上来看有哪些模块组成.从上到下主要是:glidc->系统调用->(VFS,Schedular,Soft ISR,ISR,FILE Sytem,Task Manager,Memory Manager,IP Stack)括号里面的各个模块都是并列存在的.目前对于这其中的许多名词我还不熟悉,不禁感到惭愧,要学 ......

linux中pty,pts,tty解释

Linux中tty、pty、pts的概念区别
基本概念:
1> tty(终端设备的统称):
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号