move math routines from package sys to package math,
though they still build in src/runtime.
use cgo instead of hand-written wrappers.
R=r
DELTA=740 (289 added, 300 deleted, 151 changed)
OCL=23326
CL=23331
diff --git a/src/runtime/rt1_amd64_darwin.c b/src/runtime/rt1_amd64_darwin.c
index f1ef946..453bd51 100644
--- a/src/runtime/rt1_amd64_darwin.c
+++ b/src/runtime/rt1_amd64_darwin.c
@@ -232,10 +232,10 @@
if(*psema != 0) // already have one
return;
- sema = semcreate();
+ sema = mach_semcreate();
if(!cas(psema, 0, sema)){
// Someone else filled it in. Use theirs.
- semdestroy(sema);
+ mach_semdestroy(sema);
return;
}
}
@@ -281,14 +281,14 @@
initsema(&l->sema);
if(xadd(&l->key, 1) > 1) // someone else has it; wait
- semacquire(l->sema);
+ mach_semacquire(l->sema);
}
void
unlock(Lock *l)
{
if(xadd(&l->key, -1) > 0) // someone else is waiting
- semrelease(l->sema);
+ mach_semrelease(l->sema);
}
@@ -300,14 +300,14 @@
usemacquire(Usema *s)
{
if((int32)xadd(&s->u, -1) < 0)
- semacquire(s->k);
+ mach_semacquire(s->k);
}
void
usemrelease(Usema *s)
{
if((int32)xadd(&s->u, 1) <= 0)
- semrelease(s->k);
+ mach_semrelease(s->k);
}
@@ -622,20 +622,20 @@
enum
{
- Tsemcreate = 3418,
- Rsemcreate = Tsemcreate + Reply,
+ Tmach_semcreate = 3418,
+ Rmach_semcreate = Tmach_semcreate + Reply,
- Tsemdestroy = 3419,
- Rsemdestroy = Tsemdestroy + Reply,
+ Tmach_semdestroy = 3419,
+ Rmach_semdestroy = Tmach_semdestroy + Reply,
};
-typedef struct TsemcreateMsg TsemcreateMsg;
-typedef struct RsemcreateMsg RsemcreateMsg;
-typedef struct TsemdestroyMsg TsemdestroyMsg;
-// RsemdestroyMsg = CodeMsg
+typedef struct Tmach_semcreateMsg Tmach_semcreateMsg;
+typedef struct Rmach_semcreateMsg Rmach_semcreateMsg;
+typedef struct Tmach_semdestroyMsg Tmach_semdestroyMsg;
+// Rmach_semdestroyMsg = CodeMsg
#pragma pack on
-struct TsemcreateMsg
+struct Tmach_semcreateMsg
{
mach_msg_header_t h;
NDR_record_t ndr;
@@ -643,14 +643,14 @@
int32 value;
};
-struct RsemcreateMsg
+struct Rmach_semcreateMsg
{
mach_msg_header_t h;
mach_msg_body_t body;
mach_msg_port_descriptor_t semaphore;
};
-struct TsemdestroyMsg
+struct Tmach_semdestroyMsg
{
mach_msg_header_t h;
mach_msg_body_t body;
@@ -659,11 +659,11 @@
#pragma pack off
mach_port_t
-semcreate(void)
+mach_semcreate(void)
{
union {
- TsemcreateMsg tx;
- RsemcreateMsg rx;
+ Tmach_semcreateMsg tx;
+ Rmach_semcreateMsg rx;
uint8 pad[MinMachMsg];
} m;
kern_return_t r;
@@ -671,7 +671,7 @@
m.tx.h.bits = 0;
m.tx.h.size = sizeof(m.tx);
m.tx.h.remote_port = mach_task_self();
- m.tx.h.id = Tsemcreate;
+ m.tx.h.id = Tmach_semcreate;
m.tx.ndr = zerondr;
m.tx.policy = 0; // 0 = SYNC_POLICY_FIFO
@@ -680,15 +680,15 @@
if((r = machcall(&m.tx.h, sizeof m, sizeof(m.rx))) != 0)
macherror(r, "semaphore_create");
if(m.rx.body.descriptor_count != 1)
- unimplemented("semcreate desc count");
+ unimplemented("mach_semcreate desc count");
return m.rx.semaphore.name;
}
void
-semdestroy(mach_port_t sem)
+mach_semdestroy(mach_port_t sem)
{
union {
- TsemdestroyMsg tx;
+ Tmach_semdestroyMsg tx;
uint8 pad[MinMachMsg];
} m;
kern_return_t r;
@@ -696,7 +696,7 @@
m.tx.h.bits = MACH_MSGH_BITS_COMPLEX;
m.tx.h.size = sizeof(m.tx);
m.tx.h.remote_port = mach_task_self();
- m.tx.h.id = Tsemdestroy;
+ m.tx.h.id = Tmach_semdestroy;
m.tx.body.descriptor_count = 1;
m.tx.semaphore.name = sem;
m.tx.semaphore.disposition = MACH_MSG_TYPE_MOVE_SEND;
@@ -714,7 +714,7 @@
kern_return_t mach_semaphore_signal_all(uint32 sema);
void
-semacquire(mach_port_t sem)
+mach_semacquire(mach_port_t sem)
{
kern_return_t r;
@@ -723,7 +723,7 @@
}
void
-semrelease(mach_port_t sem)
+mach_semrelease(mach_port_t sem)
{
kern_return_t r;