¹ØÓÚ linux ÄÚ´æ
Ê×ÏÈ£¬ÄÚ´æµÄ´óСÔÚlinuxÄÚºËÖеĻñÖª·½·¨
1.ͨ¹ýbootloader µÄ tag mem´«Èë¡£
Setup.c Öеĺ¯ÊýÈçÏ£º
static int __init parse_tag_mem32(const struct tag *tag)
{
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_WARNING
"Ignoring memory bank 0x%08x size %dKB\n",
tag->u.mem.start, tag->u.mem.size / 1024);
return -EINVAL;
}
arm_add_memory(tag->u.mem.start, tag->u.mem.size);
return 0;
}
__tagtable(ATAG_MEM, parse_tag_mem32);
ÆäÖÐ×îÖØÒªµÄº¯ÊýΪ£º arm_add_memory
Õâ¸öº¯ÊýÏò meminfoÊý×éÖÐÌí¼ÓÁËÒ»Ïî¹ØÓÚ memµÄÃèÊö
2.ÁíÍâÒ»¸ö·½·¨£ºÍ¨¹ýÄÚºËÆô¶¯²ÎÊýmem=À´´«µÝ
Setup.c Öеĺ¯ÊýÈçÏ£º
static void __init early_mem(char **p)
{
static int usermem __initdata = 0;
unsigned long size, start;
/*
* If the user specifies memory size, we
* blow away any automatically generated
* size.
*/
if (usermem == 0) {
usermem = 1;
meminfo.nr_banks = 0;
}
start = PHYS_OFFSET;
size = memparse(*p, p);
if (**p == '@')
start = memparse(*p + 1, p);
arm_add_memory(start, size);
}
__early_param("mem=", early_mem);
ÆäÖеڶþÖÖ·½·¨¾ßÓиߵÄÓÅÏȼ¶¡£
ÁíÍ⣬»¹ÓÐÒ»ÖÖÐÞ¸ÄmemoryÊôÐԵİ취£º
mdesc->fixup(mdesc, tags, &from, &meminfo);
ÕâÖÖ·½·¨ÒÀÀµÓÚÌØ¶¨µÄ¿ª·¢Æ½Ì¨£¬ÔÚÆ½Ì¨³õʼ»¯µÄÃèÊö½á¹¹Öж¨Òå¡£
×îÖÕ£¬ËùÒԵĹØÓÚmemoryµÄÐÅϢͨ¹ýº¯Êý
paging_init(&meminfo, mdesc);
´«µÝ¸ø mem ³õʼ»¯µÄ²¿·Ö¡£
µÚ¶þ£¬memoryµÄ³õʼ»¯¡£
paging_init µÄ¶¨ÒåÔÚ arch/arm/mm/mmu.cÖС£
ÔÚ paging_init ×îÖØÒªµÄº¯ÊýÊÇ£ºbootmem_init
¸Ãº¯Êý¶¨ÒåÓÚ£ºarch/arm/mm/init.cÖС£
Ïà¹ØÎĵµ£º
opendir£¨´ò¿ªÄ¿Â¼£©
Ïà¹Øº¯Êý
open£¬readdir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandir
±íÍ·Îļþ
#include<sys/types.h>
#include<dirent.h>
¶¨Ò庯Êý
DIR * opendir(const char * name);
º¯Êý˵Ã÷
opendir()ÓÃÀ´´ò¿ª²ÎÊýnameÖ¸¶¨µÄĿ¼£¬²¢·µ»ØDIR*ÐÎ̬µÄĿ¼Á÷£¬ºÍopen()ÀàËÆ£¬½ÓÏ ......
1.fork
´´½¨Ò»¸öнø³Ì
2.clone
°´Ö¸¶¨Ìõ¼þ´´½¨×Ó½ø³Ì
3.execve
ÔËÐпÉÖ´ÐÐÎļþ
4.exit   ......
# uname -a # ²é¿´ÄÚºË/²Ù×÷ϵͳ/CPUÐÅÏ¢
# head -n 1 /etc/issue # ²é¿´²Ù×÷ϵͳ°æ±¾
# cat /proc/cpuinfo # ²é¿´CPUÐÅÏ¢
# hostname # ²é¿´¼ÆËã»úÃû
# lspci -tv # ÁгöËùÓÐPCIÉ豸
# lsusb -tv # ÁгöËùÓÐUSBÉ豸
# lsmod # Áгö¼ÓÔØµÄÄÚºËÄ£¿é
# env # ²é¿´»·¾³±äÁ¿ ×ÊÔ´
# free -m # ²é¿´ÄÚ´æÊ¹ÓÃÁ¿ºÍ½»»»Ç ......
1> ʹÓÃCDPATHÉèÖà cd ÃüÁîµÄ¹¤×÷Ŀ¼
[ramesh@dev-db ~]# pwd
/home/ramesh
[ramesh@dev-db ~]# cd mail
-bash: cd: mail: No such file or directory
[×¢Ò⣺ÔÚµ±Ç°Ä¿Â¼ÏÂѰÕÒMAILĿ¼]
[ramesh@dev-db ~]# export CDPATH=/etc
[ramesh@dev-db ~]# cd mail /etc/mail  ......