open.c
1. int sys_utime(char * filename, struct utimbuf * times)
设置文件的access time , modified time
2. int sys_access(const char * filename,int mode)
判断当前用户是否有权限访问文件
3. int sys_chdir(const char * filename)
改变当前工作目录
命令cd
4. int sys_chroot(const char * filename)
改变当前工作目录为根目录root
5. int sys_chmod(const char * filename,int mode)
改变文件的mode
6. int sys_chown(const char * filename,int uid,int gid)
改变文件的属主
只有超级用户才有权限
7. int sys_open(const char * filename,int flag,int mode)
打开文件
fd.=open_namei(filename,flag,mode,&inode);
f->f_mode = inode->i_mode;
f->f_flags = flag;
f->f_count = 1;
f->f_inode = inode;
f->f_pos = 0;
8. int sys_creat(const char * pathname, int mode)
{
return sys_open(pathname, O_CREAT | O_TRUNC, mode);
}
9. int sys_close(unsigned int fd)
关闭文件
首先判断fd有效性
引用次数>1, 则减1
否则iput(filp->f_inode);
read_write.c
10.int sys_lseek(unsigned int fd,off_t offset, int origin)
重定位文件指针位置
origin指
0: 开头 file->f_pos=offset;
1:当前位置 file->f_pos += offset;
2:结束 file->f_pos = file->f_inode->i_size+offset
11. int sys_read(unsigned int fd,char * buf,int count)
读文件count字节到buf
管道: read_pipe(inode,buf,count);
字符设备: rw_char(READ,inode->i_zone[0],buf,count,&file->f_pos);
块设备: block_read(inode->i_zone[0],&file->f_pos,buf,count);
普通文件或目录: file_read(inode,file,buf,count);
12. int sys_write(unsigned int fd,char * buf,int count)
从buf中写count字节到文件fd中
sys_read();