static int context_terminate(Context * ctx) { ContextExtensionVxWorks * ext = EXT(ctx); VXDBG_CTX vxdbg_ctx; assert(is_dispatch_thread()); assert(ctx->parent != NULL); assert(ctx->stopped); assert(!ctx->pending_intercept); assert(!ctx->exited); assert(taskIsStopped(ext->pid)); trace(LOG_CONTEXT, "context: terminate ctx %#lx, id %#x", ctx, ext->pid); if (ext->regs_dirty) { taskRegsSet(ext->pid, ext->regs); ext->regs_dirty = 0; } return kill_context(ctx); }
int parse_init(int argc, const char *const *argv, void **context) { struct parse_context *ctxt; char buf[MAX_ERR_BUF]; sel_hash_init(); /* Set up context and escape chain */ if (!(ctxt = (struct parse_context *) malloc(sizeof(struct parse_context)))) { char *estr = strerror_r(errno, buf, MAX_ERR_BUF); logerr(MODPREFIX "malloc: %s", estr); *context = NULL; return 1; } *context = (void *) ctxt; *ctxt = default_context; /* We only need this once. NFS mounts are so common that we cache this module. */ instance_mutex_lock(); if (mount_nfs) init_ctr++; else { if ((mount_nfs = open_mount("nfs", MODPREFIX))) { init_ctr++; } else { kill_context(ctxt); *context = NULL; instance_mutex_unlock(); return 1; } } instance_mutex_unlock(); return 0; }