rem: struct rootfs *fs = _fs; struct rootfs_vnode *v = _v; struct rootfs_cookie *cookie = _cookie; int err = 0;  TRACE(("rootfs_seek: vnode 0x%x, cookie 0x%x, pos 0x%x 0x%x, seek_type %d\n", v, cookie, pos, st));  mutex_lock(&fs->lock);  switch(st) {   case SEEK_SET: if(pos == 0) { cookie->ptr = v->stream.dir.dir_head; } else { err = ESPIPE; } break; case SEEK_CUR: case SEEK_END: default: err = EINVAL; }  mutex_unlock(&fs->lock);  return err;
add: return ESPIPE;
context: rootfs_seek(fs_cookie _fs, fs_vnode _v, file_cookie _cookie, off_t pos, int st){	struct rootfs *fs = _fs;	struct rootfs_vnode *v = _v;	struct rootfs_cookie *cookie = _cookie;	int err = 0;	TRACE(("rootfs_seek: vnode 0x%x, cookie 0x%x, pos 0x%x 0x%x, seek_type %d\n", v, cookie, pos, st));	mutex_lock(&fs->lock);	switch(st) {		// only valid args are seek_type SEEK_SET, pos 0.		// this rewinds to beginning of directory		case SEEK_SET:			if(pos == 0) {				cookie->ptr = v->stream.dir.dir_head;			} else {				err = ESPIPE;			}			break;		case SEEK_CUR:		case SEEK_END:		default:			err = EINVAL;	}	mutex_unlock(&fs->lock);	return err;}