#include <9pm/u.h>
#include <9pm/libc.h>
#include <9pm/ns.h>
#include <9pm/thread.h>
#include <9pm/threadimpl.h>
int
threadid(void)
{
return _threadgetthr()->id;
}
int
threadpid(int id)
{
Tproc *pp;
Thread *t;
if (id < 0)
return id;
if (id == 0)
return _threadgetproc()->pid;
lock(&_threadpq.lk);
for (pp = _threadpq.head; pp->next; pp = pp->next)
for (t = pp->threads.head; t; t = t->nextt)
if (t->id == id) {
unlock(&_threadpq.lk);
return pp->pid;
}
unlock(&_threadpq.lk);
return -1;
}
int
threadsetgrp(int ng)
{
int og;
Thread *t;
t = _threadgetthr();
og = t->grp;
t->grp = ng;
return og;
}
int
threadgetgrp(void)
{
return _threadgetthr()->grp;
}
void
threadsetname(char *name)
{
Thread *t = _threadgetthr();
if (t->cmdname)
free(t->cmdname);
t->cmdname = strdup(name);
}
char*
threadgetname(void)
{
return _threadgetthr()->cmdname;
}
ulong*
threaddata(void)
{
return &_threadgetthr()->udata;
}
ulong*
procdata(void)
{
return &_threadgetproc()->udata;
}
void
threadnowait(void)
{
_threadgetproc()->nowait = 1;
}
Thread*
_threadgetthr(void)
{
return _threadgetproc()->curthread;
}
syntax highlighted by Code2HTML, v. 0.9.1