| 
		    
                    
   在Linux内核的实现中,有一些数据结构使用非常频繁,对研读内核的人来说至为关键,它们是: 
    1.task_struct
    Linux内核利用task_struct数据结构代表一个进程,用task_struct指针形成一个task数组。当建立新进程的时候,Linux 为新的进程分配一个task_struct结构,然后将指针保存在task数组中。调度程序维护current指针,它指向当前正在运行的进程。
    2.mm_struct
    每个进程的虚拟内存由mm_struct结构代表。该结构中包含了一组指向vm-area_struct结构的指针,vm-area_struct结构描述了虚拟内存的一个区域。
    3.inode
    Linux虚拟文件系统中的文件、目录等均由对应的索引节点(inode)代表。
    2.Linux移植项目
    mizi-linux已经根据Linux 2.4内核针对S3C2410A这一芯片进行了有针对性的移植工作,包括:
    (1)修改根目录下的Makefile文件
    a.指定目标平台为ARM: 
 
    
        
            #ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) ARCH := arm | 
         
    
 
  b.指定交叉编译器:
  CROSS_COMPILE = arm-linux-
    (2)修改arch目录中的文件
    根据本章第一节可知,Linux的arch目录存放硬件相关的内核代码,因此,在Linux内核中增加对S3C2410的支持,最主要就是要修改arch目录中的文件。
    a.在arch/arm/Makefile文件中加入: 
 
    
        
            ifeq ($(CONFIG_ARCH_S3C2410),y) TEXTADDR = 0xC0008000 MACHINE = s3c2410 Endif | 
         
    
 
  b.在arch\arm\config.in文件中加入: 
 
    
        
            if [ "$CONFIG_ARCH_S3C2410" = "y" ]; then comment 'S3C2410 Implementation' dep_bool ' SMDK (MERI TECH BOARD)' CONFIG_S3C2410_SMDK $CONFIG_ARCH_S3C2410 dep_bool ' change AIJI' CONFIG_SMDK_AIJI dep_tristate 'S3C2410 USB function support' CONFIG_S3C2410_USB $CONFIG_ARCH_S3C2100 dep_tristate ' Support for S3C2410 USB character device emulation' CONFIG_S3C2410_USB_CHAR $CONFIG_S3C2410_USB fi # /* CONFIG_ARCH_S3C2410 */ | 
         
    
 
  arch\arm\config.in文件还有几处针对S3C2410的修改。
    c.在arch/arm/boot/Makefile文件中加入: 
 
    
        
            ifeq ($(CONFIG_ARCH_S3C2410),y) ZTEXTADDR = 0x30008000 ZRELADDR = 0x30008000 endif | 
         
    
 
		    
                      
		      
		      
		   |