Commit a1c622df authored by Joel Sing's avatar Joel Sing Committed by Russ Cox

runtime: fix prototype for openbsd thrsleep

- Fix function prototype for thrsleep().
- Provide enums for clock identifiers.
- Provide timespec structure for use with thrsleep().

R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/5360042
parent 986ad31b
......@@ -97,6 +97,12 @@ struct StackT {
int32 ss_flags;
};
typedef struct Timespec Timespec;
struct Timespec {
int32 tv_sec;
int32 tv_nsec;
};
typedef struct Timeval Timeval;
struct Timeval {
int32 tv_sec;
......
......@@ -100,6 +100,13 @@ struct StackT {
byte pad_godefs_0[4];
};
typedef struct Timespec Timespec;
struct Timespec {
int32 tv_sec;
byte pad_godefs_0[4];
int64 tv_nsec;
};
typedef struct Timeval Timeval;
struct Timeval {
int64 tv_sec;
......
......@@ -93,6 +93,7 @@ typedef union sigval $Sigval;
typedef stack_t $StackT;
typedef struct timespec $Timespec;
typedef struct timeval $Timeval;
typedef struct itimerval $Itimerval;
......
......@@ -18,13 +18,19 @@ enum
ESRCH = 3,
ENOTSUP = 91,
// From OpenBSD's sys/time.h
CLOCK_REALTIME = 0,
CLOCK_VIRTUAL = 1,
CLOCK_PROF = 2,
CLOCK_MONOTONIC = 3
};
extern SigTab runtime·sigtab[];
extern int64 runtime·rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void));
extern int32 runtime·thrsleep(void *, void *, void*, void *);
extern int32 runtime·thrwakeup(void *, int32);
extern int32 runtime·thrsleep(void *ident, int32 clock_id, void *tsp, void *lock);
extern int32 runtime·thrwakeup(void *ident, int32 n);
// From OpenBSD's <sys/sysctl.h>
#define CTL_HW 6
......@@ -65,7 +71,7 @@ retry:
runtime·osyield();
if(m->waitsemacount == 0) {
// the function unlocks the spinlock
runtime·thrsleep(&m->waitsemacount, 0, 0, &m->waitsemalock);
runtime·thrsleep(&m->waitsemacount, 0, nil, &m->waitsemalock);
goto retry;
}
m->waitsemacount--;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment