summaryrefslogtreecommitdiffstats
path: root/libsync
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2018-05-04 15:17:39 -0700
committerJesse Hall <jessehall@google.com>2018-05-23 16:45:48 -0700
commit798ba95bda14f9f28561a2a27ba406537f8bb8a8 (patch)
treecc40d34a10ca49f5e8bb7dc5034eb6f383a0205d /libsync
parent2576a439e6c4a750e001e70d73a33d9519bb7660 (diff)
downloadsystem_core-798ba95bda14f9f28561a2a27ba406537f8bb8a8.tar.gz
system_core-798ba95bda14f9f28561a2a27ba406537f8bb8a8.tar.bz2
system_core-798ba95bda14f9f28561a2a27ba406537f8bb8a8.zip
sync: remove legacy sync info API
The legacy fence/pt info API has been deprecated for a while. This change removes it from headers, so remaining users will have to switch to the modern API when they're re-compiled. The functions are still provided by libsync.so and tests remain, so existing binaries should continue to work. Eventually these will be removed too, though, once it's reasonable to expect those binaries to have been recompiled. Bug: 35326015 Test: make checkbuild Test: adb shell dumpsys SurfaceFlinger --latency Change-Id: Id086fafe37c2bc1cfdca4a21107bc9208ed61f89
Diffstat (limited to 'libsync')
-rw-r--r--libsync/include/android/sync.h20
-rw-r--r--libsync/sync.c23
-rw-r--r--libsync/tests/sync_test.cpp29
3 files changed, 52 insertions, 20 deletions
diff --git a/libsync/include/android/sync.h b/libsync/include/android/sync.h
index 68f74a0b2..32bb878ba 100644
--- a/libsync/include/android/sync.h
+++ b/libsync/include/android/sync.h
@@ -41,28 +41,8 @@
__BEGIN_DECLS
-struct sync_fence_info_data {
- uint32_t len;
- char name[32];
- int32_t status;
- uint8_t pt_info[0];
-};
-
-struct sync_pt_info {
- uint32_t len;
- char obj_name[32];
- char driver_name[32];
- int32_t status;
- uint64_t timestamp_ns;
- uint8_t driver_data[0];
-};
-
/* timeout in msecs */
int sync_wait(int fd, int timeout);
-struct sync_fence_info_data *sync_fence_info(int fd);
-struct sync_pt_info *sync_pt_info(struct sync_fence_info_data *info,
- struct sync_pt_info *itr);
-void sync_fence_info_free(struct sync_fence_info_data *info);
__END_DECLS
diff --git a/libsync/sync.c b/libsync/sync.c
index 6b187faed..b8c48c7f7 100644
--- a/libsync/sync.c
+++ b/libsync/sync.c
@@ -30,6 +30,29 @@
#include <android/sync.h>
+/* Prototypes for deprecated functions that used to be declared in the legacy
+ * android/sync.h. They've been moved here to make sure new code does not use
+ * them, but the functions are still defined to avoid breaking existing
+ * binaries. Eventually they can be removed altogether.
+ */
+struct sync_fence_info_data {
+ uint32_t len;
+ char name[32];
+ int32_t status;
+ uint8_t pt_info[0];
+};
+struct sync_pt_info {
+ uint32_t len;
+ char obj_name[32];
+ char driver_name[32];
+ int32_t status;
+ uint64_t timestamp_ns;
+ uint8_t driver_data[0];
+};
+struct sync_fence_info_data* sync_fence_info(int fd);
+struct sync_pt_info* sync_pt_info(struct sync_fence_info_data* info, struct sync_pt_info* itr);
+void sync_fence_info_free(struct sync_fence_info_data* info);
+
/* Legacy Sync API */
struct sync_legacy_merge_data {
diff --git a/libsync/tests/sync_test.cpp b/libsync/tests/sync_test.cpp
index 0fb86d6fc..011b09d00 100644
--- a/libsync/tests/sync_test.cpp
+++ b/libsync/tests/sync_test.cpp
@@ -15,6 +15,35 @@
#include <random>
#include <unordered_map>
+/* These deprecated declarations were in the legacy android/sync.h. They've been removed to
+ * encourage code to move to the modern equivalents. But they are still implemented in libsync.so
+ * to avoid breaking existing binaries; as long as that's true we should keep testing them here.
+ * That means making local copies of the declarations.
+ */
+extern "C" {
+
+struct sync_fence_info_data {
+ uint32_t len;
+ char name[32];
+ int32_t status;
+ uint8_t pt_info[0];
+};
+
+struct sync_pt_info {
+ uint32_t len;
+ char obj_name[32];
+ char driver_name[32];
+ int32_t status;
+ uint64_t timestamp_ns;
+ uint8_t driver_data[0];
+};
+
+struct sync_fence_info_data* sync_fence_info(int fd);
+struct sync_pt_info* sync_pt_info(struct sync_fence_info_data* info, struct sync_pt_info* itr);
+void sync_fence_info_free(struct sync_fence_info_data* info);
+
+} // extern "C"
+
// TODO: better stress tests?
// Handle more than 64 fd's simultaneously, i.e. fix sync_fence_info's 4k limit.
// Handle wraparound in timelines like nvidia.