[futex] Soft transition to updated futex API: Step 4

Perform a soft transition to an updated futex syscall API which
adds support for building sync objects which implement priority
inherance out of futexes.

The steps involved in this transition are as follows.
1) Introduce new versions of all syscalls whose signatures are
   changing with a _deprecated suffix.  These versions are simple
   passthrus to the old functionality.
2) Update all non-zircon users to use the _deprecated versions.
3) Update the syscall signatures in zircon, and update all zircon
   users.  Retain the deprecated flavors for now.
4) Update all non-zircon users to use new versions of the syscalls.
5) Remove the _deprecated versions of the syscalls from zircon.

Step #1 was completed with I61ce7ec228cf0da847d8f1065b368edd624bd195
Step #2 was completed with I069e81a3f46e08c2fe2b0d298acf472de5031f7e
                       and I590302177a9e5e4bd532367373dc61bb652f3bc2
Step #3 was completed with I4453ffcbd62932d71ea1afdcf250d7fdc561e817
This is part of step #4.

Tests: build garnet, runtests on NUC
Change-Id: I7f10f8e04c298b3837882be53de0ea8501f4f3dd
diff --git a/src/runtime/os_fuchsia.go b/src/runtime/os_fuchsia.go
index 3f01c71..856ef9a 100644
--- a/src/runtime/os_fuchsia.go
+++ b/src/runtime/os_fuchsia.go
@@ -24,7 +24,7 @@
 	if ns < 0 {
 		deadline = zx.Time(zx.TimensecInfinite)
 	}
-	zx.Sys_futex_wait_deprecated((*int32)(unsafe.Pointer(addr)), int32(val), deadline)
+	zx.Sys_futex_wait((*int32)(unsafe.Pointer(addr)), int32(val), zx.HandleInvalid, deadline)
 }
 
 //go:nosplit
diff --git a/src/runtime/vdso_keys_fuchsia.go b/src/runtime/vdso_keys_fuchsia.go
index c52d352..ba5b51b 100644
--- a/src/runtime/vdso_keys_fuchsia.go
+++ b/src/runtime/vdso_keys_fuchsia.go
@@ -82,8 +82,9 @@
 	{"_zx_futex_wait", 0xb089e255, &vdso_zx_futex_wait},
 	{"_zx_futex_wake", 0xb089e288, &vdso_zx_futex_wake},
 	{"_zx_futex_requeue", 0xd509be7c, &vdso_zx_futex_requeue},
-	{"_zx_futex_wait_deprecated", 0x5fd30a05, &vdso_zx_futex_wait_deprecated},
-	{"_zx_futex_requeue_deprecated", 0xf0449fcc, &vdso_zx_futex_requeue_deprecated},
+	{"_zx_futex_wake_single_owner", 0x63970173, &vdso_zx_futex_wake_single_owner},
+	{"_zx_futex_requeue_single_owner", 0x8f9a9e7, &vdso_zx_futex_requeue_single_owner},
+	{"_zx_futex_get_owner", 0xf16dec6a, &vdso_zx_futex_get_owner},
 	{"_zx_port_create", 0x5294baed, &vdso_zx_port_create},
 	{"_zx_port_queue", 0x8f22883e, &vdso_zx_port_queue},
 	{"_zx_port_wait", 0xfc97666e, &vdso_zx_port_wait},
@@ -220,8 +221,9 @@
 //go:cgo_import_dynamic vdso_zx_futex_wait _zx_futex_wait
 //go:cgo_import_dynamic vdso_zx_futex_wake _zx_futex_wake
 //go:cgo_import_dynamic vdso_zx_futex_requeue _zx_futex_requeue
-//go:cgo_import_dynamic vdso_zx_futex_wait_deprecated _zx_futex_wait_deprecated
-//go:cgo_import_dynamic vdso_zx_futex_requeue_deprecated _zx_futex_requeue_deprecated
+//go:cgo_import_dynamic vdso_zx_futex_wake_single_owner _zx_futex_wake_single_owner
+//go:cgo_import_dynamic vdso_zx_futex_requeue_single_owner _zx_futex_requeue_single_owner
+//go:cgo_import_dynamic vdso_zx_futex_get_owner _zx_futex_get_owner
 //go:cgo_import_dynamic vdso_zx_port_create _zx_port_create
 //go:cgo_import_dynamic vdso_zx_port_queue _zx_port_queue
 //go:cgo_import_dynamic vdso_zx_port_wait _zx_port_wait
@@ -357,8 +359,9 @@
 //go:linkname vdso_zx_futex_wait vdso_zx_futex_wait
 //go:linkname vdso_zx_futex_wake vdso_zx_futex_wake
 //go:linkname vdso_zx_futex_requeue vdso_zx_futex_requeue
-//go:linkname vdso_zx_futex_wait_deprecated vdso_zx_futex_wait_deprecated
-//go:linkname vdso_zx_futex_requeue_deprecated vdso_zx_futex_requeue_deprecated
+//go:linkname vdso_zx_futex_wake_single_owner vdso_zx_futex_wake_single_owner
+//go:linkname vdso_zx_futex_requeue_single_owner vdso_zx_futex_requeue_single_owner
+//go:linkname vdso_zx_futex_get_owner vdso_zx_futex_get_owner
 //go:linkname vdso_zx_port_create vdso_zx_port_create
 //go:linkname vdso_zx_port_queue vdso_zx_port_queue
 //go:linkname vdso_zx_port_wait vdso_zx_port_wait
@@ -682,7 +685,7 @@
 
 //go:noescape
 //go:nosplit
-func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
+func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
 
 //go:noescape
 //go:nosplit
@@ -690,15 +693,19 @@
 
 //go:noescape
 //go:nosplit
-func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
+func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
 
 //go:noescape
 //go:nosplit
-func vdsoCall_zx_futex_wait_deprecated(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
+func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
 
 //go:noescape
 //go:nosplit
-func vdsoCall_zx_futex_requeue_deprecated(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
+func vdsoCall_zx_futex_requeue_single_owner(wake_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
 
 //go:noescape
 //go:nosplit
@@ -1039,8 +1046,9 @@
 	vdso_zx_futex_wait                          uintptr
 	vdso_zx_futex_wake                          uintptr
 	vdso_zx_futex_requeue                       uintptr
-	vdso_zx_futex_wait_deprecated               uintptr
-	vdso_zx_futex_requeue_deprecated            uintptr
+	vdso_zx_futex_wake_single_owner             uintptr
+	vdso_zx_futex_requeue_single_owner          uintptr
+	vdso_zx_futex_get_owner                     uintptr
 	vdso_zx_port_create                         uintptr
 	vdso_zx_port_queue                          uintptr
 	vdso_zx_port_wait                           uintptr
diff --git a/src/runtime/vdsocalls_fuchsia_amd64.s b/src/runtime/vdsocalls_fuchsia_amd64.s
index f318b90..3e01eaa 100644
--- a/src/runtime/vdsocalls_fuchsia_amd64.s
+++ b/src/runtime/vdsocalls_fuchsia_amd64.s
@@ -787,13 +787,14 @@
 	MOVL AX, ret+24(FP)
 	RET
 
-// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
+// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
 TEXT runtime·vdsoCall_zx_futex_wait(SB),NOSPLIT,$0-28
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVQ value_ptr+0(FP), DI
 	MOVL current_value+8(FP), SI
-	MOVQ deadline+16(FP), DX
+	MOVL new_futex_owner+12(FP), DX
+	MOVQ deadline+16(FP), CX
 	MOVQ vdso_zx_futex_wait(SB), AX
 	CALL AX
 	MOVL AX, ret+24(FP)
@@ -810,7 +811,7 @@
 	MOVL AX, ret+16(FP)
 	RET
 
-// func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
+// func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
 TEXT runtime·vdsoCall_zx_futex_requeue(SB),NOSPLIT,$0-36
 	GO_ARGS
 	NO_LOCAL_POINTERS
@@ -819,37 +820,47 @@
 	MOVL current_value+12(FP), DX
 	MOVQ requeue_ptr+16(FP), CX
 	MOVL requeue_count+24(FP), R8
+	MOVL new_requeue_owner+28(FP), R9
 	MOVQ vdso_zx_futex_requeue(SB), AX
 	CALL AX
 	MOVL AX, ret+32(FP)
 	RET
 
-// func vdsoCall_zx_futex_wait_deprecated(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
-TEXT runtime·vdsoCall_zx_futex_wait_deprecated(SB),NOSPLIT,$0-28
+// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$0-12
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVQ value_ptr+0(FP), DI
-	MOVL current_value+8(FP), SI
-	MOVQ deadline+16(FP), DX
-	MOVQ vdso_zx_futex_wait_deprecated(SB), AX
+	MOVQ vdso_zx_futex_wake_single_owner(SB), AX
 	CALL AX
-	MOVL AX, ret+24(FP)
+	MOVL AX, ret+8(FP)
 	RET
 
-// func vdsoCall_zx_futex_requeue_deprecated(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
-TEXT runtime·vdsoCall_zx_futex_requeue_deprecated(SB),NOSPLIT,$0-36
+// func vdsoCall_zx_futex_requeue_single_owner(wake_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue_single_owner(SB),NOSPLIT,$0-36
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVQ wake_ptr+0(FP), DI
-	MOVL wake_count+8(FP), SI
-	MOVL current_value+12(FP), DX
-	MOVQ requeue_ptr+16(FP), CX
-	MOVL requeue_count+24(FP), R8
-	MOVQ vdso_zx_futex_requeue_deprecated(SB), AX
+	MOVL current_value+8(FP), SI
+	MOVQ requeue_ptr+16(FP), DX
+	MOVL requeue_count+24(FP), CX
+	MOVL new_requeue_owner+28(FP), R8
+	MOVQ vdso_zx_futex_requeue_single_owner(SB), AX
 	CALL AX
 	MOVL AX, ret+32(FP)
 	RET
 
+// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$0-20
+	GO_ARGS
+	NO_LOCAL_POINTERS
+	MOVQ value_ptr+0(FP), DI
+	MOVQ koid+8(FP), SI
+	MOVQ vdso_zx_futex_get_owner(SB), AX
+	CALL AX
+	MOVL AX, ret+16(FP)
+	RET
+
 // func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
 TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$0-20
 	GO_ARGS
diff --git a/src/runtime/vdsocalls_fuchsia_arm64.s b/src/runtime/vdsocalls_fuchsia_arm64.s
index e587cdb..046ec90 100644
--- a/src/runtime/vdsocalls_fuchsia_arm64.s
+++ b/src/runtime/vdsocalls_fuchsia_arm64.s
@@ -710,13 +710,14 @@
 	MOVW R0, ret+24(FP)
 	RET
 
-// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
+// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
 TEXT runtime·vdsoCall_zx_futex_wait(SB),NOSPLIT,$0-28
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVD value_ptr+0(FP), R0
 	MOVW current_value+8(FP), R1
-	MOVD deadline+16(FP), R2
+	MOVW new_futex_owner+12(FP), R2
+	MOVD deadline+16(FP), R3
 	BL vdso_zx_futex_wait(SB)
 	MOVW R0, ret+24(FP)
 	RET
@@ -731,7 +732,7 @@
 	MOVW R0, ret+16(FP)
 	RET
 
-// func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
+// func vdsoCall_zx_futex_requeue(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
 TEXT runtime·vdsoCall_zx_futex_requeue(SB),NOSPLIT,$0-36
 	GO_ARGS
 	NO_LOCAL_POINTERS
@@ -740,34 +741,43 @@
 	MOVW current_value+12(FP), R2
 	MOVD requeue_ptr+16(FP), R3
 	MOVW requeue_count+24(FP), R4
+	MOVW new_requeue_owner+28(FP), R5
 	BL vdso_zx_futex_requeue(SB)
 	MOVW R0, ret+32(FP)
 	RET
 
-// func vdsoCall_zx_futex_wait_deprecated(value_ptr unsafe.Pointer, current_value int32, deadline int64) int32
-TEXT runtime·vdsoCall_zx_futex_wait_deprecated(SB),NOSPLIT,$0-28
+// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$0-12
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVD value_ptr+0(FP), R0
-	MOVW current_value+8(FP), R1
-	MOVD deadline+16(FP), R2
-	BL vdso_zx_futex_wait_deprecated(SB)
-	MOVW R0, ret+24(FP)
+	BL vdso_zx_futex_wake_single_owner(SB)
+	MOVW R0, ret+8(FP)
 	RET
 
-// func vdsoCall_zx_futex_requeue_deprecated(wake_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32) int32
-TEXT runtime·vdsoCall_zx_futex_requeue_deprecated(SB),NOSPLIT,$0-36
+// func vdsoCall_zx_futex_requeue_single_owner(wake_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue_single_owner(SB),NOSPLIT,$0-36
 	GO_ARGS
 	NO_LOCAL_POINTERS
 	MOVD wake_ptr+0(FP), R0
-	MOVW wake_count+8(FP), R1
-	MOVW current_value+12(FP), R2
-	MOVD requeue_ptr+16(FP), R3
-	MOVW requeue_count+24(FP), R4
-	BL vdso_zx_futex_requeue_deprecated(SB)
+	MOVW current_value+8(FP), R1
+	MOVD requeue_ptr+16(FP), R2
+	MOVW requeue_count+24(FP), R3
+	MOVW new_requeue_owner+28(FP), R4
+	BL vdso_zx_futex_requeue_single_owner(SB)
 	MOVW R0, ret+32(FP)
 	RET
 
+// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$0-20
+	GO_ARGS
+	NO_LOCAL_POINTERS
+	MOVD value_ptr+0(FP), R0
+	MOVD koid+8(FP), R1
+	BL vdso_zx_futex_get_owner(SB)
+	MOVW R0, ret+16(FP)
+	RET
+
 // func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
 TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$0-20
 	GO_ARGS
diff --git a/src/syscall/zx/syscalls_fuchsia.go b/src/syscall/zx/syscalls_fuchsia.go
index 7901b2f..fd90a2f 100644
--- a/src/syscall/zx/syscalls_fuchsia.go
+++ b/src/syscall/zx/syscalls_fuchsia.go
@@ -263,7 +263,7 @@
 
 //go:noescape
 //go:nosplit
-func Sys_futex_wait(value_ptr *int32, current_value int32, deadline Time) Status
+func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
 
 //go:noescape
 //go:nosplit
@@ -271,15 +271,19 @@
 
 //go:noescape
 //go:nosplit
-func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
+func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
 
 //go:noescape
 //go:nosplit
-func Sys_futex_wait_deprecated(value_ptr *int32, current_value int32, deadline Time) Status
+func Sys_futex_wake_single_owner(value_ptr *int32) Status
 
 //go:noescape
 //go:nosplit
-func Sys_futex_requeue_deprecated(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
+func Sys_futex_requeue_single_owner(wake_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
 
 //go:noescape
 //go:nosplit
diff --git a/src/syscall/zx/syscalls_fuchsia_amd64.s b/src/syscall/zx/syscalls_fuchsia_amd64.s
index be8f4e4..0628457 100644
--- a/src/syscall/zx/syscalls_fuchsia_amd64.s
+++ b/src/syscall/zx/syscalls_fuchsia_amd64.s
@@ -258,7 +258,7 @@
 TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_eventpair_create(SB)
 
-// func Sys_futex_wait(value_ptr *int32, current_value int32, deadline Time) Status
+// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
 TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_wait(SB)
 
@@ -266,17 +266,21 @@
 TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_wake(SB)
 
-// func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
+// func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
 TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_requeue(SB)
 
-// func Sys_futex_wait_deprecated(value_ptr *int32, current_value int32, deadline Time) Status
-TEXT ·Sys_futex_wait_deprecated(SB),NOSPLIT,$0
-	JMP runtime·vdsoCall_zx_futex_wait_deprecated(SB)
+// func Sys_futex_wake_single_owner(value_ptr *int32) Status
+TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)
 
-// func Sys_futex_requeue_deprecated(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
-TEXT ·Sys_futex_requeue_deprecated(SB),NOSPLIT,$0
-	JMP runtime·vdsoCall_zx_futex_requeue_deprecated(SB)
+// func Sys_futex_requeue_single_owner(wake_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)
+
+// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
+TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_get_owner(SB)
 
 // func Sys_port_create(options uint32, out *Handle) Status
 TEXT ·Sys_port_create(SB),NOSPLIT,$0
diff --git a/src/syscall/zx/syscalls_fuchsia_arm64.s b/src/syscall/zx/syscalls_fuchsia_arm64.s
index be8f4e4..0628457 100644
--- a/src/syscall/zx/syscalls_fuchsia_arm64.s
+++ b/src/syscall/zx/syscalls_fuchsia_arm64.s
@@ -258,7 +258,7 @@
 TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_eventpair_create(SB)
 
-// func Sys_futex_wait(value_ptr *int32, current_value int32, deadline Time) Status
+// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
 TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_wait(SB)
 
@@ -266,17 +266,21 @@
 TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_wake(SB)
 
-// func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
+// func Sys_futex_requeue(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
 TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
 	JMP runtime·vdsoCall_zx_futex_requeue(SB)
 
-// func Sys_futex_wait_deprecated(value_ptr *int32, current_value int32, deadline Time) Status
-TEXT ·Sys_futex_wait_deprecated(SB),NOSPLIT,$0
-	JMP runtime·vdsoCall_zx_futex_wait_deprecated(SB)
+// func Sys_futex_wake_single_owner(value_ptr *int32) Status
+TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)
 
-// func Sys_futex_requeue_deprecated(wake_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32) Status
-TEXT ·Sys_futex_requeue_deprecated(SB),NOSPLIT,$0
-	JMP runtime·vdsoCall_zx_futex_requeue_deprecated(SB)
+// func Sys_futex_requeue_single_owner(wake_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)
+
+// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
+TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
+	JMP runtime·vdsoCall_zx_futex_get_owner(SB)
 
 // func Sys_port_create(options uint32, out *Handle) Status
 TEXT ·Sys_port_create(SB),NOSPLIT,$0