From 55390e5a77bde74ecf4a3303870a6860de19b020 Mon Sep 17 00:00:00 2001 From: pm8fuclqg <2672033573@qq.com> Date: Sun, 26 Jun 2022 20:32:39 +0800 Subject: [PATCH] ADD file via upload --- sleep and getcwd.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 sleep and getcwd.c diff --git a/sleep and getcwd.c b/sleep and getcwd.c new file mode 100644 index 0000000..aeb44f0 --- /dev/null +++ b/sleep and getcwd.c @@ -0,0 +1,50 @@ +long sys_getcwd(char*buf,size_t size) +{ + struct buffer_head *bh; + struct m_inode*n_inode,*f_inode; + struct dir_entry*dir; + char *tmp,*b; + int k,i; + tmp=(char*)malloc(256); + b=(char*)malloc(256); + n_inode=current->pwd; + if(n_inode==current->root)strcpy(tmp,"/"); + bh=bread(n_inode->i_dev,n_inode->i_zone[0]); + while(n_inode!=current->root) + { + dir=(struct dir_entry*)(bh->b_data+sizeof(struct dir_entry)); + f_inode=iget(n_inode->i_dev,dir->inode); + brelse(bh); + bh=bread(f_inode->i_dev,f_inode->i_zone[0]); + k=0; + while(ki_size) + { + dir=(struct dir_entry*)(bh->b_data+k); + if(dir->inode==n_inode->i_num)break; + k+=sizeof(struct dir_entry); + } + strcpy(b,"/"); + strcat(b,dir->name); + strcat(b,tmp); + strcpy(tmp,b); + n_inode=f_inode; + } + brelse(bh); + if(strlen(tmp)>size)return NULL; + for(i=0;i<256;i++) + put_fs_byte(tmp[i],buf+i); + return (long)buf; +} + + + + +int sys_sleep(unsigned int count) +{ + int a=jiffies; + sys_signal(SIGALRM,SIG_IGN); + sys_alarm(count); + sys_pause(); + if((jiffies-a)/100==count)return 0; + else return -1; +} \ No newline at end of file