From f8a4c71c57ee370ef7a2b8b9144d4230cf641775 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Mon, 15 Jul 2013 13:46:14 +0900 Subject: [PATCH 01/16] support for pushing a file larger than 2GB on 32 bit system Change-Id: I1564178e0c06c32f359c330078ebb607c8edd328 Signed-off-by: yoonki.park --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 93091ab..02c3437 100644 --- a/Makefile +++ b/Makefile @@ -88,7 +88,7 @@ SDBD_SRC_FILES := \ SDBD_CFLAGS := -O2 -g -DSDB_HOST=0 -Wall -Wno-unused-parameter SDBD_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE -SDBD_CFLAGS += -DHAVE_FORKEXEC -fPIE -D_DROP_PRIVILEGE +SDBD_CFLAGS += -DHAVE_FORKEXEC -fPIE -D_DROP_PRIVILEGE -D_FILE_OFFSET_BITS=64 IFLAGS := -Iinclude -Isrc OBJDIR := bin -- 2.7.4 From beae8c3c7124c762119be3792e8cece6a8212ac6 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Mon, 15 Jul 2013 13:47:03 +0900 Subject: [PATCH 02/16] version up to 2.2.8 Change-Id: I4b611ab521661be0118e09ba17d9542d6a5b9a6e Signed-off-by: yoonki.park --- packaging/sdbd.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index dddcf14..c4a0f46 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,6 +1,6 @@ Name: sdbd Summary: SDB daemon -Version: 2.2.7 +Version: 2.2.8 Release: 0 Group: TO_BE/FILLED_IN License: TO BE FILLED IN -- 2.7.4 From 3e95d8780cddf14db47aba4f58f6559b49f98f86 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Tue, 30 Jul 2013 18:13:51 +0900 Subject: [PATCH 03/16] sync sources Change-Id: I0027264c11c91dd84eb01b9d1b5c5c48f02729cc Signed-off-by: yoonki.park --- src/file_sync_client.c | 2 +- src/sdktools.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/file_sync_client.c b/src/file_sync_client.c index 8561250..0e80efd 100644 --- a/src/file_sync_client.c +++ b/src/file_sync_client.c @@ -650,7 +650,7 @@ static int local_build_list(copyinfo **filelist, return -1; } if(!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) { - fprintf(stderr, "skipping special file '%s'\n", ci->src); + fprintf(stderr, "skipping special file\n"); free(ci); } else { ci->time = st.st_mtime; diff --git a/src/sdktools.c b/src/sdktools.c index 5770fe6..c288831 100644 --- a/src/sdktools.c +++ b/src/sdktools.c @@ -98,7 +98,7 @@ int verify_root_commands(const char *arg1) { case 3: { if (!strcmp(tokens[1], "valgrind") && cnt >= 3) { char *appid = NULL; - // the tokens[2] should be apppath + // the tokens[2] should be apppath int rc = smack_lgetlabel(tokens[2], &appid, SMACK_LABEL_ACCESS); if (rc == 0 && appid != NULL) { if (apply_sdb_rules(SDBD_LABEL_NAME, appid, "rwax") < 0) { -- 2.7.4 From 30e2a2cd75faa6f774d10757759595b8f7f70ee4 Mon Sep 17 00:00:00 2001 From: "ho.namkoong" Date: Mon, 5 Aug 2013 12:16:33 +0900 Subject: [PATCH 04/16] [Title] fix launch app script [Type] [Module] [Priority] [CQ#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: I99ad5fe502683980f32ebf2c3230b7529a9226f3 --- sdk_launch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk_launch b/sdk_launch index 03e8256..2166781 100755 --- a/sdk_launch +++ b/sdk_launch @@ -124,7 +124,7 @@ then else result_mode="DEBUG" fi - cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode __DLP_DEBUG_ARG__ :$port $launch_app_mode $args" + cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode __DLP_DEBUG_ARG__ :$port $launch_app_mode" # cmd="$COV_TEST_PREFIX /home/developer/sdk_tools/gdbserver/gdbserver :$port /opt/apps/$pkgid/bin/$exe" fi else @@ -132,7 +132,7 @@ else then if [ "" != "$result_mode" ] then - cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode $launch_app_mode $args" + cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode $launch_app_mode" else cmd="/usr/bin/launch_app $pkgid.$exe" fi -- 2.7.4 From 2591cfb9f817ecc9cf15269014528ea316daa0d1 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Fri, 13 Sep 2013 18:34:01 +0900 Subject: [PATCH 05/16] cp license file to usr/share Change-Id: Ic6b96ae9425a0e1ee92e66ffc3d39f7eb22a83ee Signed-off-by: yoonki.park --- packaging/sdbd.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index c4a0f46..ce73689 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,7 +1,7 @@ Name: sdbd Summary: SDB daemon Version: 2.2.8 -Release: 0 +Release: 1 Group: TO_BE/FILLED_IN License: TO BE FILLED IN Source0: %{name}-%{version}.tar.gz @@ -27,6 +27,9 @@ make %{?jobs:-j%jobs} %install rm -rf %{buildroot} +mkdir -p %{buildroot}/usr/share/license +cp LICENSE %{buildroot}/usr/share/license/%{name} + %make_install %post @@ -39,6 +42,7 @@ chsmack -t /home/developer %{_prefix}/sbin/sdbd %{_prefix}/sbin/sdk_launch %{_sysconfdir}/init.d/sdbd +/usr/share/license/%{name} %ifarch %{ix86} %{_sysconfdir}/rc.d/rc3.d -- 2.7.4 From 5671046492fcfaf1c287e840a80e62734f61a241 Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Mon, 30 Sep 2013 20:10:34 +0900 Subject: [PATCH 06/16] Revert "cp license file to usr/share" This reverts commit 2591cfb9f817ecc9cf15269014528ea316daa0d1. --- packaging/sdbd.spec | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index ce73689..c4a0f46 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,7 +1,7 @@ Name: sdbd Summary: SDB daemon Version: 2.2.8 -Release: 1 +Release: 0 Group: TO_BE/FILLED_IN License: TO BE FILLED IN Source0: %{name}-%{version}.tar.gz @@ -27,9 +27,6 @@ make %{?jobs:-j%jobs} %install rm -rf %{buildroot} -mkdir -p %{buildroot}/usr/share/license -cp LICENSE %{buildroot}/usr/share/license/%{name} - %make_install %post @@ -42,7 +39,6 @@ chsmack -t /home/developer %{_prefix}/sbin/sdbd %{_prefix}/sbin/sdk_launch %{_sysconfdir}/init.d/sdbd -/usr/share/license/%{name} %ifarch %{ix86} %{_sysconfdir}/rc.d/rc3.d -- 2.7.4 From 6dc46fdc6dbf4820c973e802878581065b337547 Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Thu, 10 Oct 2013 13:49:02 +0900 Subject: [PATCH 07/16] support for getting platform system information Change-Id: Ie93809dbc52b3c636a28a771fd06eb4463ee6865 Signed-off-by: kh5325.kim --- Makefile | 6 ++-- packaging/sdbd.spec | 4 ++- src/services.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 84 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 02c3437..240e1be 100644 --- a/Makefile +++ b/Makefile @@ -89,8 +89,8 @@ SDBD_SRC_FILES := \ SDBD_CFLAGS := -O2 -g -DSDB_HOST=0 -Wall -Wno-unused-parameter SDBD_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE SDBD_CFLAGS += -DHAVE_FORKEXEC -fPIE -D_DROP_PRIVILEGE -D_FILE_OFFSET_BITS=64 - -IFLAGS := -Iinclude -Isrc +SDBD_LFLAGS := -lcapi-system-info +IFLAGS := -Iinclude -Isrc -I/usr/include/system OBJDIR := bin INSTALLDIR := usr/sbin INITSCRIPTDIR := etc/init.d @@ -126,7 +126,7 @@ sdb : $(SDB_SRC_FILES) sdbd : $(SDBD_SRC_FILES) mkdir -p $(OBJDIR) - $(CC) -pthread -o $(OBJDIR)/$(MODULE) $(SDBD_CFLAGS) $(IFLAGS) $(SDBD_SRC_FILES) + $(CC) -pthread -o $(OBJDIR)/$(MODULE) $(SDBD_CFLAGS) $(IFLAGS) $(SDBD_SRC_FILES) $(SDBD_LFLAGS) install : mkdir -p $(DESTDIR)/$(INSTALLDIR) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index ce73689..44b3fe4 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -5,6 +5,8 @@ Release: 1 Group: TO_BE/FILLED_IN License: TO BE FILLED IN Source0: %{name}-%{version}.tar.gz + +BuildRequires: capi-system-info-devel Requires(post): pkgmgr Requires(post): pkgmgr-server Requires(post): wrt @@ -38,7 +40,7 @@ chsmack -t /home/developer %files %manifest sdbd.manifest -%defattr(-,root,root,-) +%defattr(-,root,root,-) %{_prefix}/sbin/sdbd %{_prefix}/sbin/sdk_launch %{_sysconfdir}/init.d/sdbd diff --git a/src/services.c b/src/services.c index dfc2735..4af9982 100644 --- a/src/services.c +++ b/src/services.c @@ -38,6 +38,9 @@ # include "sdktools.h" #endif +#include "strutils.h" +#include + typedef struct stinfo stinfo; struct stinfo { @@ -577,6 +580,79 @@ static int create_syncproc_thread() #endif +#define UNKNOWN "unknown" +#define INFOBUF_MAXLEN 64 +#define INFO_VERSION "2.2.0" +typedef struct platform_info { + + char platform_info_version[INFOBUF_MAXLEN]; + char model_name[INFOBUF_MAXLEN]; // Emulator + char platform_name[INFOBUF_MAXLEN]; // Tizen + char platform_version[INFOBUF_MAXLEN]; // 2.2.1 + char profile_name[INFOBUF_MAXLEN]; // 2.2.1 +} pinfo; + +static void get_platforminfo(int fd, void *cookie) { + pinfo sysinfo; + + char *value = NULL; + s_strncpy(sysinfo.platform_info_version, INFO_VERSION, strlen(INFO_VERSION)); + + int r = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &value); + if (r != SYSTEM_INFO_ERROR_NONE) { + s_strncpy(sysinfo.model_name, UNKNOWN, strlen(UNKNOWN)); + D("fail to get system model:%d\n", errno); + } else { + s_strncpy(sysinfo.model_name, value, sizeof(sysinfo.model_name)); + D("returns model_name:%s\n", value); + if (value != NULL) { + free(value); + } + } + + r = system_info_get_value_string(SYSTEM_INFO_KEY_PLATFORM_NAME, &value); + if (r != SYSTEM_INFO_ERROR_NONE) { + s_strncpy(sysinfo.platform_name, UNKNOWN, strlen(UNKNOWN)); + D("fail to get platform name:%d\n", errno); + } else { + s_strncpy(sysinfo.platform_name, value, sizeof(sysinfo.platform_name)); + D("returns platform_name:%s\n", value); + if (value != NULL) { + free(value); + } + + } + + // FIXME: the result is different when using SYSTEM_INFO_KEY_TIZEN_VERSION_NAME + r = system_info_get_platform_string("tizen.org/feature/platform.version", &value); + if (r != SYSTEM_INFO_ERROR_NONE) { + s_strncpy(sysinfo.platform_version, UNKNOWN, strlen(UNKNOWN)); + D("fail to get platform version:%d\n", errno); + } else { + s_strncpy(sysinfo.platform_version, value, sizeof(sysinfo.platform_version)); + D("returns platform_version:%s\n", value); + if (value != NULL) { + free(value); + } + } + + r = system_info_get_platform_string("tizen.org/feature/profile", &value); + if (r != SYSTEM_INFO_ERROR_NONE) { + s_strncpy(sysinfo.profile_name, UNKNOWN, strlen(UNKNOWN)); + D("fail to get profile name:%d\n", errno); + } else { + s_strncpy(sysinfo.profile_name, value, sizeof(sysinfo.profile_name)); + D("returns profile name:%s\n", value); + if (value != NULL) { + free(value); + } + } + + writex(fd, &sysinfo, sizeof(pinfo)); + + sdb_close(fd); +} + int service_to_fd(const char *name) { int ret = -1; @@ -664,10 +740,8 @@ int service_to_fd(const char *name) } else if(!strncmp(name, "cs:", 5)) { ret = create_service_thread(inoti_service, NULL); #endif -#if 0 - } else if(!strncmp(name, "echo:", 5)){ - ret = create_service_thread(echo_service, 0); -#endif + } else if(!strncmp(name, "sysinfo:", 8)){ + ret = create_service_thread(get_platforminfo, 0); } if (ret >= 0) { if (close_on_exec(ret) < 0) { -- 2.7.4 From 0e853f457ac65b25ee1f5beb02ed8332aac3a710 Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Thu, 10 Oct 2013 16:05:03 +0900 Subject: [PATCH 08/16] send notify to qemu when sdbd has been booted up Change-Id: Ibe67da241c97a8669de418b4db6186269a53cefa Signed-off-by: kh5325.kim --- src/sdb.c | 66 ++++++++++++++++++++++++++++++ src/sdb.h | 2 + src/transport_local.c | 109 ++++++++++++++++---------------------------------- 3 files changed, 103 insertions(+), 74 deletions(-) diff --git a/src/sdb.c b/src/sdb.c index 563dd18..0a6d7e7 100644 --- a/src/sdb.c +++ b/src/sdb.c @@ -37,6 +37,7 @@ #include "usb_vendors.h" #endif +#define PROC_CMDLINE_PATH "/proc/cmdline" #if SDB_TRACE SDB_MUTEX_DEFINE( D_lock ); #endif @@ -335,6 +336,71 @@ static char *connection_state_name(atransport *t) } } +static int get_str_cmdline(char *src, char *dest, char str[], int str_size) { + char *s = strstr(src, dest); + if (s == NULL) { + return -1; + } + char *e = strstr(s, " "); + if (e == NULL) { + return -1; + } + + int len = e-s-strlen(dest); + + if (len >= str_size) { + D("buffer size(%d) should be bigger than %d\n", str_size, len+1); + return -1; + } + + s_strncpy(str, s + strlen(dest), len); + return len; +} + +int get_emulator_forward_port() { + char cmdline[512]; + int fd = unix_open(PROC_CMDLINE_PATH, O_RDONLY); + char *port_str = "sdb_port="; + char port_buf[7]={0,}; + int port = -1; + + if (fd < 0) { + return -1; + } + if(read_line(fd, cmdline, sizeof(cmdline))) { + D("qemu cmd: %s\n", cmdline); + if (get_str_cmdline(cmdline, port_str, port_buf, sizeof(port_buf)) < 1) { + D("could not get port from cmdline\n"); + sdb_close(fd); + return -1; + } + // FIXME: remove comma! + port_buf[strlen(port_buf)-1]='\0'; + port = strtol(port_buf, NULL, 10); + } + return port; +} + +int get_emulator_name(char str[], int str_size) { + char cmdline[512]; + int fd = unix_open(PROC_CMDLINE_PATH, O_RDONLY); + char *name_str = "vm_name="; + + if (fd < 0) { + D("fail to read /proc/cmdline\n"); + return -1; + } + if(read_line(fd, cmdline, sizeof(cmdline))) { + D("qemu cmd: %s\n", cmdline); + if (get_str_cmdline(cmdline, name_str, str, str_size) < 1) { + D("could not get emulator name from cmdline\n"); + sdb_close(fd); + return -1; + } + } + return 0; +} + void parse_banner(char *banner, atransport *t) { char *type, *product, *end; diff --git a/src/sdb.h b/src/sdb.h index 958fc40..ad6acf1 100644 --- a/src/sdb.h +++ b/src/sdb.h @@ -338,6 +338,8 @@ int should_drop_privileges(void); int set_developer_privileges(); void set_root_privileges(); +int get_emulator_forward_port(void); +int get_emulator_name(char str[], int str_size); /* packet allocator */ apacket *get_apacket(void); void put_apacket(apacket *p); diff --git a/src/transport_local.c b/src/transport_local.c index 6811f61..ee59551 100644 --- a/src/transport_local.c +++ b/src/transport_local.c @@ -270,8 +270,11 @@ static void *server_socket_thread(void * arg) alen = sizeof(addr); D("server: trying to get new connection from %d\n", port); - // im ready to accept new client! - pthread_cond_broadcast(¬i_cond); + + if (is_emulator()) { + // im ready to accept new client! + pthread_cond_broadcast(¬i_cond); + } fd = sdb_socket_accept(serverfd, &addr, &alen); if(fd >= 0) { @@ -400,27 +403,6 @@ static const char _ok_resp[] = "ok"; #endif // !SDB_HOST #endif -static int get_str_cmdline(char *src, char *dest, char str[], int str_size) { - char *s = strstr(src, dest); - if (s == NULL) { - return -1; - } - char *e = strstr(s, " "); - if (e == NULL) { - return -1; - } - - int len = e-s-strlen(dest); - - if (len >= str_size) { - printf("buffer size should be over %d\n", len+1); - return -1; - } - - s_strncpy(str, s + strlen(dest), len); - return len; -} - static int send_msg_to_localhost_from_guest(int local_port, char *request, int sock_type) { int ret, s; struct sockaddr_in server; @@ -430,6 +412,8 @@ static int send_msg_to_localhost_from_guest(int local_port, char *request, int s server.sin_port = htons(local_port); server.sin_addr.s_addr = inet_addr(QEMU_FORWARD_IP); + D("try to send notification to host(%s:%d) using %s:[%s]\n", QEMU_FORWARD_IP, local_port, (sock_type == 0) ? "tcp" : "udp", request); + if (sock_type == 0) { s = socket(AF_INET, SOCK_STREAM, 0); } else { @@ -446,67 +430,43 @@ static int send_msg_to_localhost_from_guest(int local_port, char *request, int s return -1; } if (sdb_write(s, request, strlen(request)) < 0) { - D("could not send sdbd noti request\n"); + D("could not send notification request to host\n"); + sdb_close(s); + return -1; } - sdb_close(s); + D("sent notification request to host\n"); + return 0; } static void notify_sdbd_startup() { - int ret; char buffer[512]; char request[512]; // send the request to sdbserver - char cmdline[512]; - int fd = unix_open("/proc/cmdline", O_RDONLY); - char *port_str = "sdb_port="; - char *name_str = "vm_name="; - char port[7]={0,}; char vm_name[256]={0,}; + int base_port = get_emulator_forward_port(); + int r = get_emulator_name(vm_name, sizeof vm_name); - if (fd < 0) { - D("fail to read /proc/cmdline\n"); + if (base_port < 0 || r < 0) { return; } - if(read_line(fd, cmdline, sizeof(cmdline))) { - D("qemu cmd: %s\n", cmdline); - ret = get_str_cmdline(cmdline, port_str, port, sizeof(port)); - if (ret < 1) { - D("could not get port from cmdline\n"); - sdb_close(fd); - return; - } - // FIXME: remove comma! - port[strlen(port)-1]='\0'; - - ret = get_str_cmdline(cmdline, name_str, vm_name, sizeof(vm_name)); - if (ret < 1) { - D("could not get port from cmdline\n"); - sdb_close(fd); - return; - } - int base_port = strtol(port, NULL, 10); - snprintf(request, sizeof request, "host:emulator:%d:%s",base_port + 1, vm_name); - - snprintf( buffer, sizeof buffer, "%04x%s", strlen(request), request ); - D("[%s]\n", buffer); - if (send_msg_to_localhost_from_guest(DEFAULT_SDB_PORT, buffer, 0) <0) { - D("could not send sdbd noti request\n"); - sdb_close(fd); - return; - } - // send to sensord with udp - char sensord_buf[16]; - snprintf(sensord_buf, sizeof sensord_buf, "2\n"); - if (send_msg_to_localhost_from_guest(base_port + 3, sensord_buf, 1) < 0) { - D("could not send senserd noti request\n"); - sdb_close(fd); - return; - } + + // tell qemu sdbd is just started with udp + char sensord_buf[16]; + snprintf(sensord_buf, sizeof sensord_buf, "2\n"); + if (send_msg_to_localhost_from_guest(base_port + 3, sensord_buf, 1) < 0) { + D("could not send sensord noti request\n"); + } + + // tell sdb server emulator's vms name + snprintf(request, sizeof request, "host:emulator:%d:%s",base_port + 1, vm_name); + snprintf(buffer, sizeof buffer, "%04x%s", strlen(request), request ); + + if (send_msg_to_localhost_from_guest(DEFAULT_SDB_PORT, buffer, 0) <0) { + D("could not send sdbd noti request. it might sdb server has not been started yet.\n"); } - sdb_close(fd); } void local_init(int port) @@ -548,12 +508,13 @@ void local_init(int port) * wait until server socket thread made! * get noti from server_socket_thread */ + if (is_emulator()) { + sdb_mutex_lock(®ister_noti_lock); + pthread_cond_wait(¬i_cond, ®ister_noti_lock); - sdb_mutex_lock(®ister_noti_lock); - pthread_cond_wait(¬i_cond, ®ister_noti_lock); - - notify_sdbd_startup(); - sdb_mutex_unlock(®ister_noti_lock); + notify_sdbd_startup(); + sdb_mutex_unlock(®ister_noti_lock); + } } static void remote_kick(atransport *t) -- 2.7.4 From a45ba4ef2cebc454c7d1218fd01c75f550807bfd Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Thu, 10 Oct 2013 16:36:54 +0900 Subject: [PATCH 09/16] send device name when incomming connection Change-Id: I3e8f2e3c18eeeee2008df2584538e929b0a949fd Signed-off-by: kh5325.kim --- src/sdb.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- src/sdb.h | 4 +++- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/sdb.c b/src/sdb.c index 0a6d7e7..aa75a82 100644 --- a/src/sdb.c +++ b/src/sdb.c @@ -29,6 +29,7 @@ #include "sysdeps.h" #include "sdb.h" +#include "strutils.h" #if !SDB_HOST #include @@ -36,7 +37,7 @@ #else #include "usb_vendors.h" #endif - +#include #define PROC_CMDLINE_PATH "/proc/cmdline" #if SDB_TRACE SDB_MUTEX_DEFINE( D_lock ); @@ -299,7 +300,7 @@ static void send_close(unsigned local, unsigned remote, atransport *t) p->msg.arg1 = remote; send_packet(p, t); } - +static int device_status = 0; // 0:online, 1: password locked later static void send_connect(atransport *t) { D("Calling send_connect \n"); @@ -307,9 +308,24 @@ static void send_connect(atransport *t) cp->msg.command = A_CNXN; cp->msg.arg0 = A_VERSION; cp->msg.arg1 = MAX_PAYLOAD; - snprintf((char*) cp->data, sizeof cp->data, "%s::", - HOST ? "host" : sdb_device_banner); + + char device_name[256]={0,}; + int r = 0; + + if (is_emulator()) { + r = get_emulator_name(device_name, sizeof device_name); + } else { + r = get_device_name(device_name, sizeof device_name); + } + if (r < 0) { + snprintf((char*) cp->data, sizeof cp->data, "%s::%s::%d", sdb_device_banner, DEFAULT_DEVICENAME, device_status); + } else { + snprintf((char*) cp->data, sizeof cp->data, "%s::%s::%d", sdb_device_banner, device_name, device_status); + } + + D("CNXN data:%s\n", (char*)cp->data); cp->msg.data_length = strlen((char*) cp->data) + 1; + send_packet(cp, t); #if SDB_HOST /* XXX why sleep here? */ @@ -401,6 +417,37 @@ int get_emulator_name(char str[], int str_size) { return 0; } +int get_device_name(char str[], int str_size) { + char *value = NULL; + int r = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &value); + if (r != SYSTEM_INFO_ERROR_NONE) { + D("fail to get system model:%d\n", errno); + return -1; + } else { + s_strncpy(str, value, str_size); + D("returns model_name:%s\n", value); + if (value != NULL) { + free(value); + } + return 0; + } + /* + int fd = unix_open(USB_SERIAL_PATH, O_RDONLY); + if (fd < 0) { + D("fail to read:%s (%d)\n", USB_SERIAL_PATH, errno); + return -1; + } + + if(read_line(fd, str, str_size)) { + D("device serial name: %s\n", str); + sdb_close(fd); + return 0; + } + sdb_close(fd); + */ + return -1; +} + void parse_banner(char *banner, atransport *t) { char *type, *product, *end; diff --git a/src/sdb.h b/src/sdb.h index ad6acf1..01c8b40 100644 --- a/src/sdb.h +++ b/src/sdb.h @@ -340,6 +340,7 @@ void set_root_privileges(); int get_emulator_forward_port(void); int get_emulator_name(char str[], int str_size); +int get_device_name(char str[], int str_size); /* packet allocator */ apacket *get_apacket(void); void put_apacket(apacket *p); @@ -489,12 +490,13 @@ int sendfailmsg(int fd, const char *reason); int handle_host_request(char *service, transport_type ttype, char* serial, int reply_fd, asocket *s); int is_emulator(void); +#define DEFAULT_DEVICENAME "unknown" #if SDB_HOST /* tizen-specific */ #define DEVICEMAP_SEPARATOR ":" #define DEVICENAME_MAX 256 #define VMS_PATH OS_PATH_SEPARATOR_STR "vms" OS_PATH_SEPARATOR_STR // should include sysdeps.h above -#define DEFAULT_DEVICENAME "" + void register_device_name(const char *device_type, const char *device_name, int port); int get_devicename_from_shdmem(int port, char *device_name); int read_line(const int fd, char* ptr, const size_t maxlen); -- 2.7.4 From 88e59dbe2ec1f4f40b6af8e6dad150b57c7d1c83 Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Thu, 10 Oct 2013 21:32:23 +0900 Subject: [PATCH 10/16] cp sdbd.service file & clean up build script files Change-Id: Icfdd8a59092e7dd51a71ab87324a7a4f0726b4b3 Signed-off-by: kh5325.kim --- Makefile | 95 +---------------------------------------- packaging/sdbd.changes | 10 +++++ packaging/sdbd.spec | 38 ++++++++--------- packaging/sdbd_device.service | 10 +++++ packaging/sdbd_emulator.service | 15 +++++++ sdk_launch => script/sdk_launch | 0 6 files changed, 56 insertions(+), 112 deletions(-) create mode 100644 packaging/sdbd.changes create mode 100644 packaging/sdbd_device.service create mode 100644 packaging/sdbd_emulator.service rename sdk_launch => script/sdk_launch (100%) diff --git a/Makefile b/Makefile index 240e1be..dc0eb36 100644 --- a/Makefile +++ b/Makefile @@ -1,67 +1,8 @@ # # -# Makefile for sdb +# Makefile for sdbd # -# -HOST_OS := $(shell uname -s | tr A-Z a-z) - -# sdb host tool -# ========================================================= - -# Default to a virtual (sockets) usb interface -USB_SRCS := -EXTRA_SRCS := - -ifeq ($(HOST_OS),linux) - USB_SRCS := usb_linux.c - EXTRA_SRCS := get_my_path_linux.c - LOCAL_LDLIBS += -lrt -lncurses -lpthread -endif - -ifeq ($(HOST_OS),darwin) - USB_SRCS := usb_osx.c - EXTRA_SRCS := get_my_path_darwin.c - LOCAL_LDLIBS += -lpthread -framework CoreFoundation -framework IOKit -framework Carbon - SDB_EXTRA_CFLAGS := -mmacosx-version-min=10.4 -endif - -ifeq ($(HOST_OS),freebsd) - USB_SRCS := usb_libusb.c - EXTRA_SRCS := get_my_path_freebsd.c - LOCAL_LDLIBS += -lpthread -lusb -endif - - - -SDB_SRC_FILES := \ - src/sdb.c \ - src/console.c \ - src/transport.c \ - src/transport_local.c \ - src/transport_usb.c \ - src/commandline.c \ - src/sdb_client.c \ - src/sockets.c \ - src/services.c \ - src/file_sync_client.c \ - src/$(EXTRA_SRCS) \ - src/$(USB_SRCS) \ - src/utils.c \ - src/usb_vendors.c \ - src/fdevent.c \ - src/socket_inaddr_any_server.c \ - src/socket_local_client.c \ - src/socket_local_server.c \ - src/socket_loopback_client.c \ - src/socket_loopback_server.c \ - src/socket_network_client.c - -SDB_CFLAGS := -O2 -g -DSDB_HOST=1 -DSDB_HOST_ON_TARGET=1 -Wall -Wno-unused-parameter -SDB_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE -SDB_CFLAGS += -DHAVE_FORKEXEC -DHAVE_TERMIO_H -DHAVE_SYMLINKS -SDB_LFLAGS := $(LOCAL_LDLIBS) - SDBD_SRC_FILES := \ src/sdb.c \ src/fdevent.c \ @@ -94,36 +35,11 @@ IFLAGS := -Iinclude -Isrc -I/usr/include/system OBJDIR := bin INSTALLDIR := usr/sbin INITSCRIPTDIR := etc/init.d -RCSCRIPTDIR := etc/rc.d/rc3.d -LAUNCH_SCRIPT := sdk_launch - -UNAME := $(shell uname -sm) -ifneq (,$(findstring 86,$(UNAME))) - HOST_ARCH := x86 -endif -TARGET_ARCH = $(HOST_ARCH) -ifeq ($(TARGET_ARCH),) - TARGET_ARCH := arm -endif - -ifeq ($(TARGET_ARCH),arm) - MODULE := sdbd - SDBD_CFLAGS += -DANDROID_GADGET=1 -else -ifeq ($(TARGET_HOST),true) - MODULE := sdb -else - MODULE := sdbd -endif -endif +MODULE := sdbd all : $(MODULE) -sdb : $(SDB_SRC_FILES) - mkdir -p $(OBJDIR) - $(CC) -pthread -o $(OBJDIR)/$(MODULE) $(SDB_CFLAGS) $(SDB_EXTRA_CFLAGS) $(SDB_LFLAGS) $(IFLAGS) $(SDB_SRC_FILES) - sdbd : $(SDBD_SRC_FILES) mkdir -p $(OBJDIR) $(CC) -pthread -o $(OBJDIR)/$(MODULE) $(SDBD_CFLAGS) $(IFLAGS) $(SDBD_SRC_FILES) $(SDBD_LFLAGS) @@ -131,15 +47,8 @@ sdbd : $(SDBD_SRC_FILES) install : mkdir -p $(DESTDIR)/$(INSTALLDIR) install $(OBJDIR)/$(MODULE) $(DESTDIR)/$(INSTALLDIR)/$(MODULE) - install $(LAUNCH_SCRIPT) $(DESTDIR)/$(INSTALLDIR)/$(LAUNCH_SCRIPT) -ifeq ($(MODULE),sdbd) mkdir -p $(DESTDIR)/$(INITSCRIPTDIR) install script/sdbd $(DESTDIR)/$(INITSCRIPTDIR)/sdbd -endif -ifeq ($(TARGET_ARCH),x86) - mkdir -p $(DESTDIR)/$(RCSCRIPTDIR) - install script/S06sdbd $(DESTDIR)/$(RCSCRIPTDIR)/S06sdbd -endif clean : rm -rf $(OBJDIR)/* diff --git a/packaging/sdbd.changes b/packaging/sdbd.changes new file mode 100644 index 0000000..89f04c3 --- /dev/null +++ b/packaging/sdbd.changes @@ -0,0 +1,10 @@ +* Wed Apr 04 2013 Ho Namkoong + - supports platform gdbserver +* Mon Dec 02 2012 Yoonki Park + - supports cs report service using inotify +* Mon Dec 02 2012 Yoonki Park + - sdb code dropped from adb (Ice Cream Samdwich 4.1.1) +* Wed Apr 18 2012 Yoonki Park + - set dir permission to 777 +* Sat Mar 31 2012 Yoonki Park + - let sshd be daemon and create sshd.pid file \ No newline at end of file diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 44b3fe4..049e4e9 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,10 +1,13 @@ Name: sdbd Summary: SDB daemon -Version: 2.2.8 -Release: 1 -Group: TO_BE/FILLED_IN -License: TO BE FILLED IN +Version: 2.2.13 +Release: 0 +License: Apache-2.0 +Summary: SDB daemon +Group: System/Utilities Source0: %{name}-%{version}.tar.gz +Source1001: sdbd_device.service +Source1002: sdbd_emulator.service BuildRequires: capi-system-info-devel Requires(post): pkgmgr @@ -17,7 +20,7 @@ Requires: debug-launchpad Requires: dbus %description -Description: SDB daemon +Description: SDB daemon. %prep @@ -32,7 +35,17 @@ rm -rf %{buildroot} mkdir -p %{buildroot}/usr/share/license cp LICENSE %{buildroot}/usr/share/license/%{name} + %make_install +mkdir -p %{buildroot}%{_libdir}/systemd/system +%if 0%{?simulator} +install -m 0644 %SOURCE1001 %{buildroot}%{_libdir}/systemd/system/sdbd.service +%else +install -m 0644 %SOURCE1002 %{buildroot}%{_libdir}/systemd/system/sdbd.service +%endif + +mkdir -p %{buildroot}%{_prefix}/sbin +install -m 755 script/sdk_launch %{buildroot}%{_prefix}/sbin/ %post chsmack -a sdbd::home /home/developer @@ -45,19 +58,6 @@ chsmack -t /home/developer %{_prefix}/sbin/sdk_launch %{_sysconfdir}/init.d/sdbd /usr/share/license/%{name} - -%ifarch %{ix86} - %{_sysconfdir}/rc.d/rc3.d -%endif +%{_libdir}/systemd/system/sdbd.service %changelog -* Wed Apr 04 2013 Ho Namkoong - - supports platform gdbserver -* Mon Dec 02 2012 Yoonki Park - - supports cs report service using inotify -* Mon Dec 02 2012 Yoonki Park - - sdb code dropped from adb (Ice Cream Samdwich 4.1.1) -* Wed Apr 18 2012 Yoonki Park - - set dir permission to 777 -* Sat Mar 31 2012 Yoonki Park - - let sshd be daemon and create sshd.pid file diff --git a/packaging/sdbd_device.service b/packaging/sdbd_device.service new file mode 100644 index 0000000..0b92d85 --- /dev/null +++ b/packaging/sdbd_device.service @@ -0,0 +1,10 @@ +[Unit] +Description=sdbd +After=default.target + +[Service] +Type=forking +Environment=DISPLAY=:0 +PIDFile=/tmp/.sdbd.pid +RemainAfterExit=yes +ExecStart=/usr/sbin/sdbd diff --git a/packaging/sdbd_emulator.service b/packaging/sdbd_emulator.service new file mode 100644 index 0000000..274c3e9 --- /dev/null +++ b/packaging/sdbd_emulator.service @@ -0,0 +1,15 @@ +[Unit] +Description=sdbd +Before=sensord.service + +[Service] +Type=forking +Environment=DISPLAY=:0 +PIDFile=/tmp/.sdbd.pid +RemainAfterExit=yes +ExecStartPre=/bin/bash -c "/bin/echo `/bin/sed 's/^.*sdb_port=\([^, ]*\).*$/\1/g' /proc/cmdline` > /opt/home/sdb_port.txt" +ExecStart=/usr/sbin/sdbd + +[Install] +WantedBy=emulator.target + diff --git a/sdk_launch b/script/sdk_launch similarity index 100% rename from sdk_launch rename to script/sdk_launch -- 2.7.4 From 5b89f0c278e5ab86af922b3ab807cda6d9147891 Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Fri, 11 Oct 2013 17:39:10 +0900 Subject: [PATCH 11/16] fixed to cp sdbd.service file to right target Change-Id: Ie0c35ac38863615a4542102810aecc496af68168 Signed-off-by: kh5325.kim --- packaging/sdbd.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 4c31af7..27e89de 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -36,9 +36,9 @@ rm -rf %{buildroot} %make_install mkdir -p %{buildroot}%{_libdir}/systemd/system %if 0%{?simulator} -install -m 0644 %SOURCE1001 %{buildroot}%{_libdir}/systemd/system/sdbd.service -%else install -m 0644 %SOURCE1002 %{buildroot}%{_libdir}/systemd/system/sdbd.service +%else +install -m 0644 %SOURCE1001 %{buildroot}%{_libdir}/systemd/system/sdbd.service %endif mkdir -p %{buildroot}%{_prefix}/sbin -- 2.7.4 From 7e3c2611d02c00fb3f74b8d00eca2aa3659b0537 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Wed, 16 Oct 2013 15:58:45 +0900 Subject: [PATCH 12/16] remove resource leak Change-Id: I63610fd78399f58ddb7eac45d84c146f4fac7631 Signed-off-by: yoonki.park --- src/sdb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sdb.c b/src/sdb.c index aa75a82..b726574 100644 --- a/src/sdb.c +++ b/src/sdb.c @@ -394,6 +394,7 @@ int get_emulator_forward_port() { port_buf[strlen(port_buf)-1]='\0'; port = strtol(port_buf, NULL, 10); } + sdb_close(fd); return port; } @@ -414,6 +415,7 @@ int get_emulator_name(char str[], int str_size) { return -1; } } + sdb_close(fd); return 0; } -- 2.7.4 From b365f8105d0612f98d57b68f05ffab17c9c686ed Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Thu, 17 Oct 2013 13:32:21 +0900 Subject: [PATCH 13/16] verify system info pkg version dependency Change-Id: If5ea7679055f473e1d38ab14de1383354663f9c1 Signed-off-by: yoonki.park --- packaging/sdbd.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 27e89de..53c6391 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -9,7 +9,7 @@ Source0: %{name}-%{version}.tar.gz Source1001: sdbd_device.service Source1002: sdbd_emulator.service -BuildRequires: capi-system-info-devel +BuildRequires: capi-system-info-devel >= 0.2.0 Requires(post): pkgmgr Requires(post): pkgmgr-server Requires(post): wrt -- 2.7.4 From 10bfc881e596781cc128f83658b49918311bb456 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Fri, 11 Oct 2013 23:48:06 +0900 Subject: [PATCH 14/16] make link sdbd.service file to emulator target dir Change-Id: I26a4a042b694777dde1f60f79a977ef927cd59a0 Signed-off-by: yoonki.park --- packaging/sdbd.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 53c6391..1161e9d 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,7 +1,7 @@ Name: sdbd Summary: SDB daemon Version: 2.2.13 -Release: 0 +Release: 1 License: Apache-2.0 Summary: SDB daemon Group: System/Utilities @@ -37,6 +37,8 @@ rm -rf %{buildroot} mkdir -p %{buildroot}%{_libdir}/systemd/system %if 0%{?simulator} install -m 0644 %SOURCE1002 %{buildroot}%{_libdir}/systemd/system/sdbd.service +mkdir -p %{buildroot}/%{_libdir}/systemd/system/emulator.target.wants +ln -s %{_libdir}/systemd/system/sdbd.service %{buildroot}/%{_libdir}/systemd/system/emulator.target.wants/ %else install -m 0644 %SOURCE1001 %{buildroot}%{_libdir}/systemd/system/sdbd.service %endif @@ -55,5 +57,8 @@ chsmack -t /home/developer %{_prefix}/sbin/sdk_launch %{_sysconfdir}/init.d/sdbd %{_libdir}/systemd/system/sdbd.service +%if 0%{?simulator} +%{_libdir}/systemd/system/emulator.target.wants/sdbd.service +%endif %changelog -- 2.7.4 From 23acaa596302c76366e25f249e1eb9d2ea4da0d3 Mon Sep 17 00:00:00 2001 From: Junfeng Dong Date: Thu, 31 Oct 2013 11:26:31 +0800 Subject: [PATCH 15/16] Fix some runtime issue in 3.0 set manifest request domain to floor. Remove wrong run time requires. Change-Id: I8598b9320faf7890dd47d51b0b4ce00751af7b62 Signed-off-by: Junfeng Dong --- packaging/sdbd.changes | 5 ++++- packaging/sdbd.manifest | 5 +++++ packaging/sdbd.spec | 16 ++++------------ sdbd.manifest | 31 ------------------------------- 4 files changed, 13 insertions(+), 44 deletions(-) create mode 100644 packaging/sdbd.manifest delete mode 100644 sdbd.manifest diff --git a/packaging/sdbd.changes b/packaging/sdbd.changes index 89f04c3..fc078af 100644 --- a/packaging/sdbd.changes +++ b/packaging/sdbd.changes @@ -1,3 +1,6 @@ +* Thu Oct 31 2013 Junfeng Dong submit/tizen/20131011.084016@81e3d5b +- Fix some runtime issue in 3.0 + * Wed Apr 04 2013 Ho Namkoong - supports platform gdbserver * Mon Dec 02 2012 Yoonki Park @@ -7,4 +10,4 @@ * Wed Apr 18 2012 Yoonki Park - set dir permission to 777 * Sat Mar 31 2012 Yoonki Park - - let sshd be daemon and create sshd.pid file \ No newline at end of file + - let sshd be daemon and create sshd.pid file diff --git a/packaging/sdbd.manifest b/packaging/sdbd.manifest new file mode 100644 index 0000000..86dbb26 --- /dev/null +++ b/packaging/sdbd.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 1161e9d..f7381a0 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -8,15 +8,10 @@ Group: System/Utilities Source0: %{name}-%{version}.tar.gz Source1001: sdbd_device.service Source1002: sdbd_emulator.service +Source1003: %{name}.manifest BuildRequires: capi-system-info-devel >= 0.2.0 -Requires(post): pkgmgr -Requires(post): pkgmgr-server -Requires(post): wrt -Requires(post): aul -Requires: default-files-tizen Requires: sys-assert -Requires: debug-launchpad Requires: dbus %description @@ -25,15 +20,15 @@ Description: SDB daemon. %prep %setup -q +cp %{SOURCE1003} . %build make %{?jobs:-j%jobs} %install -rm -rf %{buildroot} - %make_install + mkdir -p %{buildroot}%{_libdir}/systemd/system %if 0%{?simulator} install -m 0644 %SOURCE1002 %{buildroot}%{_libdir}/systemd/system/sdbd.service @@ -46,12 +41,9 @@ install -m 0644 %SOURCE1001 %{buildroot}%{_libdir}/systemd/system/sdbd.service mkdir -p %{buildroot}%{_prefix}/sbin install -m 755 script/sdk_launch %{buildroot}%{_prefix}/sbin/ -%post -chsmack -a sdbd::home /home/developer -chsmack -t /home/developer - %files %manifest sdbd.manifest +%license LICENSE %defattr(-,root,root,-) %{_prefix}/sbin/sdbd %{_prefix}/sbin/sdk_launch diff --git a/sdbd.manifest b/sdbd.manifest deleted file mode 100644 index cc708a5..0000000 --- a/sdbd.manifest +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 2.7.4 From 0289ceb6950258c15f7471a2c2ae4eba667a62a0 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Mon, 4 Nov 2013 14:36:46 +0900 Subject: [PATCH 16/16] version up to 3.0.0 Change-Id: Ie42c8f10e84d3ce3603306620459c1a600358e58 Signed-off-by: yoonki.park --- packaging/sdbd.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index f7381a0..c6a8de4 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -1,7 +1,7 @@ Name: sdbd Summary: SDB daemon -Version: 2.2.13 -Release: 1 +Version: 3.0.0 +Release: 0 License: Apache-2.0 Summary: SDB daemon Group: System/Utilities -- 2.7.4