// NewVNode status_t Volume::NewVNode(vnode_id vnid, Node* node) { status_t error = new_vnode(fVolumeManager->GetID(), vnid, node); if (error == B_OK) node->SetKnownToVFS(true); return error; }
// NewVNode status_t Volume::NewVNode(Node *node) { status_t error = NodeAdded(node); if (error == B_OK) { error = new_vnode(GetID(), node->GetID(), node); if (error != B_OK) NodeRemoved(node); } return error; }
SOS() { readyq = new_dllist(); mt_init(); writeok = mt_sem_create(0); writers = mt_sem_create(1); readers = mt_sem_create(1); nelem = mt_sem_create(0); consoleWait = mt_sem_create(0); wr_iobuf = make_io_buffer(1); cr_iobuf = make_io_buffer(256); crb_no_chars = 0; crb_end = 0; crb_begin = 0; curpid = -1; // pids = make_rb(); init_partitions(); DEBUG('e', "pagesize: %d\n", PageSize); jrbTree = make_jrb(); // Step 20 init = new_pcb(); // Step 22 init->pid = get_new_pid(); // Step 22 cread_vnode = new_vnode(); cread_vnode->iobuf =cr_iobuf; cr_iobuf->nwriters = 1; cwrite_vnode = new_vnode(); cwrite_vnode->iobuf = wr_iobuf; wr_iobuf->nreaders = 1; start_timer(10); bzero(main_memory, MemorySize); mt_create(read_console_io, (void *)cr_iobuf); mt_create(write_console_io, (void *)wr_iobuf); //mt_create(read_console, NULL); mt_create(initialize_user_process, (void *)Argv); schedule(); }
static int rootfs_mount(nspace_id nsid, const char *device, ulong flags, void *parms, size_t len, void **data, vnode_id *vnid) { int err; nspace *ns; vnode *root; vnode_id rvnid; if (device || parms || (len != 0)) { err = EINVAL; goto error1; } ns = (nspace *) malloc(sizeof(nspace)); if (!ns) { err = ENOMEM; goto error1; } root = (vnode *) malloc(sizeof(vnode)); if (!root) { err = ENOMEM; goto error2; } rvnid = 1; ns->nsid = nsid; ns->vnnum = 0; ns->nxvnid = rvnid; ns->root = root; if (new_lock(&ns->lock, "rootfs") < 0) { err = -1; goto error3; } ns->skiplist = NewSL(&compare_vnode, NULL, NO_DUPLICATES); if (!ns->skiplist) { err = -1; goto error4; } root->vnid = rvnid; root->parent = root; root->ns = ns; root->removed = FALSE; root->name = NULL; root->next = root->prev = NULL; root->head = NULL; root->symlink = NULL; /* ### do it for real */ root->uid = 0; root->gid = 0; root->mode = MY_S_IFDIR | 0777; root->mtime = time(NULL); err = new_vnode(nsid, rvnid, root); if (err) goto error5; *data = ns; *vnid = rvnid; return 0; error5: FreeSL(ns->skiplist); error4: free_lock(&ns->lock); error3: free(root); error2: free(ns); error1: return err; }