libtest: configure mutexes

This commit is contained in:
Jan Mercl
2021-11-04 21:11:26 +01:00
parent da7d46b478
commit c07fc560c9
5 changed files with 358 additions and 13 deletions

View File

@@ -21,22 +21,25 @@ func init() {
panic(fmt.Errorf("sqlite: thread safety configuration error"))
}
varArgs := libc.Xmalloc(tls, types.Size_t(unsafe.Sizeof(uintptr(0))))
if varArgs == 0 {
panic(fmt.Errorf("cannot allocate memory"))
}
switch fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH) {
case "linux/amd64":
// experimental pthreads support currently only on linux/amd64
default:
varArgs := libc.Xmalloc(tls, types.Size_t(unsafe.Sizeof(uintptr(0))))
if varArgs == 0 {
panic(fmt.Errorf("cannot allocate memory"))
}
// experimental pthreads support currently only on linux/amd64
if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" {
// int sqlite3_config(int, ...);
if rc := Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(varArgs, uintptr(unsafe.Pointer(&mutexMethods)))); rc != SQLITE_OK {
p := Xsqlite3_errstr(tls, rc)
str := libc.GoString(p)
panic(fmt.Errorf("sqlite: failed to configure mutex methods: %v", str))
}
libc.Xfree(tls, varArgs)
}
libc.Xfree(tls, varArgs)
tls.Close()
}