github.com/gotranspile/cxgo@v0.3.8-0.20240118201721-29871598a6a2/runtime/pthread/pthread.go (about) 1 package pthread 2 3 import ( 4 "sync" 5 "unsafe" 6 7 "github.com/gotranspile/cxgo/runtime/libc" 8 ) 9 10 const MUTEX_RECURSIVE = 1 11 12 type Attr struct { 13 _ int 14 } 15 16 func Create(th **Thread, attr *Attr, start func(unsafe.Pointer) unsafe.Pointer, arg unsafe.Pointer) int32 { 17 panic("TODO") 18 } 19 20 type Thread struct { 21 _ int 22 } 23 24 func (th *Thread) Join(ret unsafe.Pointer) int32 { 25 panic("TODO") 26 } 27 28 func (th *Thread) TimedJoinNP(ret unsafe.Pointer, abs *libc.TimeSpec) int32 { 29 panic("TODO") 30 } 31 32 type MutexAttr struct { 33 typ int32 34 } 35 36 func (m *MutexAttr) Init() int32 { 37 m.typ = 0 38 return 0 39 } 40 41 func (m *MutexAttr) SetType(typ int32) int32 { 42 m.typ = typ 43 return 0 44 } 45 46 func (m *MutexAttr) Destroy() int32 { 47 m.typ = 0 48 return 0 49 } 50 51 type Mutex struct { 52 *sync.Mutex 53 } 54 55 func (m *Mutex) Init(attr *MutexAttr) int32 { 56 if attr.typ == MUTEX_RECURSIVE { 57 // FIXME 58 } 59 m.Mutex = new(sync.Mutex) 60 return 0 61 } 62 63 func (m *Mutex) Destroy() int32 { 64 m.Mutex = nil 65 return 0 66 } 67 68 func (m *Mutex) CLock() int32 { 69 m.Mutex.Lock() 70 return 0 71 } 72 73 func (m *Mutex) TryLock() int32 { 74 panic("TODO") 75 } 76 77 func (m *Mutex) TimedLock(t *libc.TimeSpec) int32 { 78 panic("TODO") 79 } 80 81 func (m *Mutex) CUnlock() int32 { 82 m.Mutex.Unlock() 83 return 0 84 } 85 86 type CondAttr struct { 87 // FIXME 88 } 89 90 func CondInit(c *sync.Cond, attr *CondAttr) int32 { 91 if attr != nil { 92 panic("TODO") 93 } 94 *c = *sync.NewCond(nil) 95 return 0 96 } 97 98 func CondFree(c *sync.Cond) int32 { 99 return 0 100 }