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(k<f_inode->i_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;
}