Commit graph

17 commits

Author SHA1 Message Date
Saurabh Shah
90a74600d7 sync: store the num_fences from first SYNC_IOC_FILE_INFO
Fixes a bug with the signal time of devices using the
modern sync file interface. The bug only affects kernels running
an Android kernel 4.9 and later.

b/63395253

Test: tests/sync_test.cpp

Change-Id: I6fb00bcb8e16a3268c357153edd8e35a44546caa
2017-09-25 15:51:46 -07:00
George Burgess IV
4ff5ff29d2 libsync: Fix a double-free.
sync_file_info, the only caller of legacy_fence_info_to_sync_file_info,
unconditionally frees legacy_info after
legacy_fence_info_to_sync_file_info is called. So, if this calloc
fails, we'll end up freeing legacy_info twice.

Bug: 27101951
Test: mma. Static analyzer complaint about double-free is gone.
Change-Id: I43bf820af9aadf30cb8eabce57416f69a8fccf89
2017-09-05 16:26:36 -07:00
Jesse Hall
6cd0fc56c0 sync: Cache knowledge of kernel uapi version
Previously all libsync calls would try first the modern/mainline uapi
and if that failed try the legacy uapi, or vice versa. This is
inefficient, and confusing when looking at strace. With this change,
after the first successful syscall, libsync know's what uapi version
the kernel supports, and will only try that version in the future.

Test: sync-unit-tests on bullhead
Change-Id: I8b5de0194da0cfc6c080c0180318e16bb673d3c9
2017-03-08 17:34:14 -08:00
Jesse Hall
41129a2526 sync: rename sync/sync.h to android/sync.h
Leave a temporary symlink from the old name to avoid having to change
all dependencies simultaneously.

Bug: 1901466
Test: m
Change-Id: Id210f0091457e52e1a6e048d241a723bdbe8779b
2017-02-23 18:44:50 -08:00
Jesse Hall
b7fdb2a128 sync: move declarations from sync/sync.h to sync.c
None of these should be needed or used outside of sync.c.

Test: lunch bullhead-eng ; m
Change-Id: I548a499d0e2ada2ab4987e63a8116327c3be0076
2017-02-23 18:44:50 -08:00
Jesse Hall
836661616f sync: implement sync_file_info
Also modifies sync-unit-test to use sync_file_info instead of the
deprecated sync_fence_info, but check that they match in several tests.

Bug: 35138793
Test: sync-unit-tests on bullhead
Change-Id: Ic672d1c89798435a8b71469500e82c770a66bf4d
2017-02-23 18:44:50 -08:00
Jesse Hall
89530820d7 sync: refactor sync_fence_info
Split the sync_fence_info implementation into multiple functions. This
clarifies the logic, and allows the parts to be reused in the upcoming
sync_file_info function.

Test: sync-unit-tests on bullhead
Change-Id: I0ea37067dddf41b831670f08eb99e0b7fd52adce
2017-02-23 18:44:50 -08:00
Jesse Hall
077ffd5055 sync: Use correct type in size calculation
The previous and current types are the same size, so this wouldn't
have caused a bug in practice, but it is confusing, and would have
been a problem in the unlikely event we changed the size of one of the
types.

Test: sync-unit-tests on bullhead
Change-Id: Ic43b81f3b4ff214af86b6b6d4d02c648f95d0c4b
2017-02-23 18:44:50 -08:00
Gustavo Padovan
61ab0d74d2 libsync: add support to new Sync API
Change libsync functions in a way that it can run dynamically on both
APIs.

v2: fix whitespace changes and poll return handling

v3: handle error cases on sync_wait()

Test: Sync unit tests still passes.
Change-Id: I743ab92ce39cbfa75dca41dd0a435efa9f2aab66
hange-Id: Ib56f2c6441b41028bc9f66998676790b7713988a
2017-01-17 14:29:01 -08:00
Gustavo Padovan
ffc687baad libsync: open new location of sw_sync file
sw_sync file for debug was moved to debugfs. Try to open it and if it
fails try to open /dev/sw_sync.

Test: Sync unit tests still passes.
Change-Id: Ie078fbc2eb5294f28b916a9e65b7fcd3a18a8580
hange-Id: I216874964368d939bed2779d98cd89e527a57d45
2017-01-17 14:28:45 -08:00
Gustavo Padovan
d6bbc5de66 libsync: move kernel headers for sync ioctls to sync.h
This patch moves the legacy API to the internal sync.h header
and add documentation to it.

Test: Sync unit tests still passes.
Change-Id: I9b17eb23af30043b3df5fb9e857affad68ba8521
2017-01-17 14:28:00 -08:00
Christopher Ferris
1514bb4f2f Update for kernel headers v4.8.14.
Update sync.c to include the structurs from sw_sync.h. This uapi
header has been deleted.

Test: Built mips/arm/arm64/x86/x86_64. Built and booted angler.
Change-Id: I2495cb17b35f697fb8a2a00f6633ccb53f78293f
2016-12-12 18:59:42 -08:00
Christopher Ferris
f83c7923f9 Update for kernel headers v4.7.2.
The new uapi kernel headers added a new SEGV reason code, so
add it to the tombstone code.

Update sync.c to include the needed data structures itself. Someone
else will be fixing this to work on old versus new kernels.

Change-Id: Icb27713ea38a20003c7671a9bca262eebd96099b
2016-08-26 16:48:18 -07:00
Elliott Hughes
a744b05984 Add missing <malloc.h> and <string.h> includes.
Change-Id: Ia41756e607663d056e7d2fdd7ecbec7e5841a913
2015-01-28 11:37:57 -08:00
Erik Gilling
984d35703d update libsync to support new timeout semantics
Change-Id: Ibedbd261bb96a84785c4e679b6fc4061287d5d7d
2012-08-21 18:21:18 -07:00
Jamie Gennis
3be33e4618 libsync: remove linux includes from sync/sync.h
This change removes the #includes of "linux/*.h" headers from the libsync
header.  It currently does this by copying the needed structs that are in the
linux headers.  This is intended to be a temporary solution.

Change-Id: Ie7e1a8e05fcf8809ba4aa0e2427efe141dae5327
2012-06-19 09:52:24 -07:00
Erik Gilling
196b3a5f6f sync: Add lib sync helper library
Used to talk to kernel synchronization framework

Change-Id: I66e1f4a90f5d58d384bf1cec09db52101f182c5e
Signed-off-by: Erik Gilling <konkers@android.com>
2012-04-18 13:36:17 -07:00