Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <thread.h>
4
#include "threadimpl.h"
5
 
6
int _threaddebuglevel;
7
 
8
void
9
_threaddebug(ulong flag, char *fmt, ...)
10
{
11
	char buf[128];
12
	va_list arg;
13
	Fmt f;
14
	Proc *p;
15
 
16
	if((_threaddebuglevel&flag) == 0)
17
		return;
18
 
19
	fmtfdinit(&f, 2, buf, sizeof buf);
20
 
21
	p = _threadgetproc();
22
	if(p==nil)
23
		fmtprint(&f, "noproc ");
24
	else if(p->thread)
25
		fmtprint(&f, "%d.%d ", p->pid, p->thread->id);
26
	else
27
		fmtprint(&f, "%d._ ", p->pid);
28
 
29
	va_start(arg, fmt);
30
	fmtvprint(&f, fmt, arg);
31
	va_end(arg);
32
	fmtprint(&f, "\n");
33
	fmtfdflush(&f);
34
}
35
 
36
void
37
_threadassert(char *s)
38
{
39
	char buf[256];
40
	int n;
41
	Proc *p;
42
 
43
	p = _threadgetproc();
44
	if(p && p->thread)
45
		n = sprint(buf, "%d.%d ", p->pid, p->thread->id);
46
	else
47
		n = 0;
48
	snprint(buf+n, sizeof(buf)-n, "%s: assertion failed\n", s);
49
	write(2, buf, strlen(buf));
50
	abort();
51
}