ref: 7d2f1a2d83df21f0520180537eba7f930bbdb7ee
dir: /module.c/
#include <u.h>
#include <libc.h>
#include <thread.h>
#include "dat.h"
#include "fns.h"
Module *
addmodule(Session *s, char *name)
{
static uvlong id = 1;
Module *m = alloc(DataModule);
m->name = strdup(name);
m->symtab = allocsymtab(1);
m->id = id++;
wlock(&s->modules->lock);
s->modules->count++;
s->modules->modules = allocextra(s->modules, sizeof(Module *) * s->modules->count);
s->modules->modules[s->modules->count-1] = m;
wunlock(&s->modules->lock);
return m;
}
Enumeration *
enummodules(Session *s)
{
rlock(&s->modules->lock);
Enumeration *e = allocenum(s->modules->count);
for(uvlong i = 0; i < s->modules->count; i++)
e->items[i] = s->modules->modules[i];
runlock(&s->modules->lock);
return e;
}