gvisor/pkg
Jamie Liu e9e8be6613 Implement shared futexes.
- Shared futex objects on shared mappings are represented by Mappable +
  offset, analogous to Linux's use of inode + offset. Add type
  futex.Key, and change the futex.Manager bucket API to use futex.Keys
  instead of addresses.

- Extend the futex.Checker interface to be able to return Keys for
  memory mappings. It returns Keys rather than just mappings because
  whether the address or the target of the mapping is used in the Key
  depends on whether the mapping is MAP_SHARED or MAP_PRIVATE; this
  matters because using mapping target for a futex on a MAP_PRIVATE
  mapping causes it to stop working across COW-breaking.

- futex.Manager.WaitComplete depends on atomic updates to
  futex.Waiter.addr to determine when it has locked the right bucket,
  which is much less straightforward for struct futex.Waiter.key. Switch
  to an atomically-accessed futex.Waiter.bucket pointer.

- futex.Manager.Wake now needs to take a futex.Checker to resolve
  addresses for shared futexes. CLONE_CHILD_CLEARTID requires the exit
  path to perform a shared futex wakeup (Linux:
  kernel/fork.c:mm_release() => sys_futex(tsk->clear_child_tid,
  FUTEX_WAKE, ...)). This is a problem because futexChecker is in the
  syscalls/linux package. Move it to kernel.

PiperOrigin-RevId: 216207039
Change-Id: I708d68e2d1f47e526d9afd95e7fed410c84afccf
2018-10-08 10:20:38 -07:00
..
abi Implement TIOCSCTTY ioctl as a noop. 2018-10-03 17:29:56 -07:00
amutex stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
atomicbitops stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
binary binary: append slices 2018-08-21 16:26:32 -07:00
bits stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
bpf Automated rollback of changelist 207037226 2018-08-02 10:42:48 -07:00
compressio compressio: stop worker-pool reference / dependency loop. 2018-09-12 17:24:53 -07:00
control stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
cpuid Automated rollback of changelist 207037226 2018-08-02 10:42:48 -07:00
dhcp Change tcpip.Route.Mask to tcpip.AddressMask. 2018-09-28 12:18:15 -07:00
eventchannel Bump some timeouts in the image tests. 2018-10-02 17:28:09 -07:00
fd stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
gate stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
ilist Distinguish Element and Linker for ilist. 2018-09-04 09:19:11 -07:00
linewriter stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
log stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
metric stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
p9 Add additional sanity checks for walk. 2018-09-07 16:53:12 -07:00
rand Allow building on !linux 2018-08-22 13:31:11 -07:00
refs Distinguish Element and Linker for ilist. 2018-09-04 09:19:11 -07:00
seccomp Run gofmt -s on everything 2018-09-21 14:06:59 -07:00
secio stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
segment Automated rollback of changelist 207037226 2018-08-02 10:42:48 -07:00
sentry Implement shared futexes. 2018-10-08 10:20:38 -07:00
sleep netstack: make go:linkname work for all architectures 2018-09-27 12:53:10 -07:00
state Increase state test timeout 2018-09-18 14:38:42 -07:00
sync Add //pkg/sync:generic_atomicptr. 2018-10-03 13:52:15 -07:00
syserr Reduce map lookups in syserr 2018-08-14 19:03:38 -07:00
syserror stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
tcpip Change tcpip.Route.Mask to tcpip.AddressMask. 2018-09-28 12:18:15 -07:00
tmutex stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
unet stateify: support explicit annotation mode; convert refs and stack packages. 2018-07-27 10:17:21 -07:00
urpc runsc fsgofer: Support dynamic serving of filesystems. 2018-08-15 16:25:22 -07:00
waiter Add S/R support for FIOASYNC 2018-10-03 17:03:09 -07:00