// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT.

//go:build (darwin && amd64) || (darwin && arm64) || (freebsd && amd64) || (freebsd && arm64) || (netbsd && amd64) || (openbsd && amd64) || (openbsd && arm64)

package sqlite3

import (
	"unsafe"

	"modernc.org/libc"
)

// C documentation
//
//	/* Create a new thread */
func _sqlite3ThreadCreate(tls *libc.TLS, ppThread uintptr, __ccgo_fp_xTask uintptr, pIn uintptr) (r int32) {
	var p uintptr
	_ = p
	**(**uintptr)(__ccgo_up(ppThread)) = uintptr(0)
	p = _sqlite3Malloc(tls, uint64(24))
	if p == uintptr(0) {
		return int32(SQLITE_NOMEM)
	}
	if int32(int64(p))/int32(17)&int32(1) != 0 {
		(*TSQLiteThread)(unsafe.Pointer(p)).FxTask = __ccgo_fp_xTask
		(*TSQLiteThread)(unsafe.Pointer(p)).FpIn = pIn
	} else {
		(*TSQLiteThread)(unsafe.Pointer(p)).FxTask = uintptr(0)
		(*TSQLiteThread)(unsafe.Pointer(p)).FpResult = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(&struct{ uintptr }{__ccgo_fp_xTask})))(tls, pIn)
	}
	**(**uintptr)(__ccgo_up(ppThread)) = p
	return SQLITE_OK
}
