This commit is contained in:
rsc 2006-01-27 05:51:54 +00:00
parent bc5d577127
commit c54b8b69ed
6 changed files with 16 additions and 13 deletions

View file

@ -1,9 +1,19 @@
#include <u.h>
#define NOPLAN9DEFINES
#include <sys/param.h>
#include <sys/time.h>
#include <sched.h>
#include <libc.h>
#if defined(__NetBSD__) || (defined(__OpenBSD__) && OpenBSD <= 200511)
# define sched_yield() \
# do{ struct timespec ts; \
# ts.tv_sec = 0; \
# ts.tv_nsec = 10; \
# nanosleep(&ts, 0); \
# }while(0)
#endif
int
p9sleep(long milli)
{

View file

@ -5,6 +5,8 @@ typedef struct ucontext ucontext_t;
extern int swapcontext(ucontext_t*, ucontext_t*);
extern void makecontext(ucontext_t*, void(*)(), int, ...);
extern int getmcontext(mcontext_t*);
extern void setmcontext(mcontetx_t*);
/*-
* Copyright (c) 1999 Marcel Moolenaar

View file

@ -33,7 +33,7 @@ _threadlock(Lock *l, int block, ulong pc)
for(i=0; i<1000; i++){
if(!_tas(&l->held))
return 1;
sched_yield();
sleep(0);
}
/* increasingly slow */
for(i=0; i<10; i++){

View file

@ -96,4 +96,5 @@ ENTRY(rfork_thread)
movl %ebp, %esp
popl %ebp
PIC_PROLOGUE
jmp PIC_PLT(_C_LABEL(__cerror))
jmp PIC_PLT(_C_LABEL(__cerror))