From: Adhavan M Date: Fri, 4 May 2018 11:33:02 +0000 (+0000) Subject: Revert "Revert "Use endpoints provided by socket activation"" X-Git-Tag: submit/tizen/20180504.114430~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F42%2F177942%2F2;p=sdk%2Ftarget%2Fsdbd.git Revert "Revert "Use endpoints provided by socket activation"" This reverts commit 5c68bcb8110ee5bbf1be97144589c27c5590e9e2. Change-Id: I5404515bd698661367643e2e85536e7a4dbd6950 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 4416ce1..080dbcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,11 +99,19 @@ IF(WEARABLE_PROFILE STREQUAL on) ADD_DEFINITIONS("-D_WEARABLE") ENDIF() +# Get systemd +pkg_check_modules(SYSTEMD REQUIRED libsystemd) +foreach(flag ${SYSTEMD_CFLAGS}) + set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +endforeach(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") + find_package(Threads REQUIRED) ADD_EXECUTABLE(sdbd ${SDBD_SRCS}) ADD_EXECUTABLE(sdbd-user ${SDBD_SUBS}) -TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS}) +TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS}) TARGET_LINK_LIBRARIES(sdbd-user -pie ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS}) set_property( diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 8bba6c1..8cd9879 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -17,6 +17,8 @@ Source1006: sdbd_emulator_tv.service BuildRequires: capi-system-info-devel >= 0.2.0 BuildRequires: cmake >= 2.8.3 +BuildRequires: pkgconfig +BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libtzplatform-config) #BuildRequires: sec-product-features BuildRequires: pkgconfig(libsmack) diff --git a/src/usb_funcfs_client.c b/src/usb_funcfs_client.c index 3e1ef6b..94f56f4 100644 --- a/src/usb_funcfs_client.c +++ b/src/usb_funcfs_client.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "sysdeps.h" @@ -138,7 +139,18 @@ static void *usb_open_thread(void *x) { struct usb_handle *usb = (struct usb_handle *)x; - init_functionfs(usb); + /* Endpoints are received from sytemd */ + if (sd_listen_fds(0) >= 3) { + sdb_mutex_lock(&usb->control_lock); + usb->control = SD_LISTEN_FDS_START + 0; + usb->bulk_out = SD_LISTEN_FDS_START + 1; + usb->bulk_in = SD_LISTEN_FDS_START + 2; + sdb_cond_signal(&usb->control_notify); + sdb_mutex_unlock(&usb->control_lock); + } else { + init_functionfs(usb); + } + if (usb->control < 0 || usb->bulk_in < 0 || usb->bulk_out < 0) { D("[ opening device failed ]\n"); return (void *)-1; @@ -394,7 +406,7 @@ void ffs_usb_init() perror("[ failed to allocate memory for usb FunctionFS bulk device ]\n"); return; } - if (autoconfig(h) < 0) { + if (sd_listen_fds(0) < 3 && autoconfig(h) < 0) { perror("[ can't recognize usb FunctionFS bulk device ]\n"); free(h); return;