MULTI_DEBUG_CHANNEL(qemu, emul_state);
-static EmulatorConfigInfo _emul_info;
+static EmulatorConfigInfo _emul_info = {0,};
static EmulatorConfigState _emul_state;
/* start_skin_client or not ? */
void set_emul_vm_base_port(int port)
{
_emul_info.vm_base_port = port;
+ _emul_info.device_serial_number = port + 1;
}
int get_emul_vm_base_port(void)
return _emul_info.vm_base_port;
}
+int get_device_serial_number(void)
+{
+ return _emul_info.device_serial_number;
+}
+
+
/* current emulator condition */
int get_emulator_condition(void)
{
bool input_touch_enable;
int max_touch_point;
int vm_base_port;
+ int device_serial_number;
/* add here */
} EmulatorConfigInfo;
bool is_emul_input_touch_enable(void);
int get_emul_max_touch_point(void);
int get_emul_vm_base_port(void);
+int get_device_serial_number(void);
int get_emulator_condition(void);
short get_emul_rotation(void);
gchar bin_path[PATH_MAX] = { 0, };
gchar log_path[PATH_MAX] = { 0, };
-int tizen_base_port;
char tizen_target_path[PATH_MAX];
char tizen_target_img_path[PATH_MAX];
mloop_ev_stop();
shutdown_skin_server();
shutdown_guest_server();
- stop_ecs();
+ stop_ecs();
#ifdef CONFIG_LINUX
/* clean up the vm lock memory by munkyu */
INFO("* Current time : %s\n", timeinfo);
#ifdef CONFIG_SDL
- /* Gets the version of the dynamically linked SDL library */
- INFO("* Host sdl version : (%d, %d, %d)\n",
- SDL_Linked_Version()->major,
- SDL_Linked_Version()->minor,
- SDL_Linked_Version()->patch);
+ /* Gets the version of the dynamically linked SDL library */
+ INFO("* Host sdl version : (%d, %d, %d)\n",
+ SDL_Linked_Version()->major,
+ SDL_Linked_Version()->minor,
+ SDL_Linked_Version()->patch);
#endif
print_system_info_os();
ftp_proxy[MIDBUF] = {0,}, socks_proxy[MIDBUF] = {0,},
dns[MIDBUF] = {0};
- tizen_base_port = get_sdb_base_port();
-
qemu_add_opts(&qemu_ecs_opts);
- start_ecs();
+ start_ecs();
get_host_proxy(http_proxy, https_proxy, ftp_proxy, socks_proxy);
/* using "DNS" provided by default QEMU */
g_strlcpy(dns, DEFAULT_QEMU_DNS_IP, strlen(DEFAULT_QEMU_DNS_IP) + 1);
+ set_sdb_base_port();
+
check_vm_lock();
make_vm_lock();
sdb_setup(); /* determine the base port for emulator */
- set_emul_vm_base_port(tizen_base_port);
gchar * const tmp_str = g_strdup_printf(" sdb_port=%d,"
" http_proxy=%s https_proxy=%s ftp_proxy=%s socks_proxy=%s"
construct_main_window(_skin_argc, _skin_argv, _qemu_argc, _qemu_argv);
- int guest_server_port = tizen_base_port + SDB_UDP_SENSOR_INDEX;
+ int guest_server_port = get_device_serial_number() + SDB_UDP_SENSOR_INDEX;
start_guest_server(guest_server_port);
mloop_ev_init();
MULTI_DEBUG_CHANNEL(qemu, osutil);
extern char tizen_target_img_path[];
-extern int tizen_base_port;
CFDictionaryRef proxySettings;
static char *cfstring_to_cstring(CFStringRef str) {
{
int shmid;
char *shared_memory;
-
- shmid = shmget((key_t)tizen_base_port, MAXLEN, 0666|IPC_CREAT);
+ int base_port;
+ base_port = get_emul_vm_base_port();
+ shmid = shmget((key_t)base_port, MAXLEN, 0666|IPC_CREAT);
if (shmid == -1) {
ERR("shmget failed\n");
perror("osutil-darwin: ");
return;
}
sprintf(shared_memory, "%s", tizen_target_img_path);
- INFO("shared memory key: %d, value: %s\n", tizen_base_port, (char *)shared_memory);
+ INFO("shared memory key: %d, value: %s\n", base_port, (char *)shared_memory);
if (shmdt(shared_memory) == -1) {
ERR("shmdt failed\n");
char *p = NULL;
CFStringRef pacURL = (CFStringRef)CFDictionaryGetValue(proxySettings,
- kSCPropNetProxiesProxyAutoConfigURLString);
- if (pacURL) {
- char url[MAXLEN] = {};
- CFStringGetCString(pacURL, url, sizeof url, kCFStringEncodingASCII);
+ kSCPropNetProxiesProxyAutoConfigURLString);
+ if (pacURL) {
+ char url[MAXLEN] = {};
+ CFStringGetCString(pacURL, url, sizeof url, kCFStringEncodingASCII);
INFO("pac address: %s\n", (char*)url);
- download_url(url);
+ download_url(url);
}
fp_pacfile = fopen(pac_tempfile, "r");
}
else {
ERR("fail to get pacfile fp\n");
- return -1;
+ return -1;
}
remove(pac_tempfile);
ret = get_auto_proxy(http_proxy, https_proxy, ftp_proxy, socks_proxy);
if(strlen(http_proxy) == 0 && ret < 0) {
INFO("MANUAL PROXY MODE\n");
- get_proxy(http_proxy, https_proxy, ftp_proxy, socks_proxy);
- }
+ get_proxy(http_proxy, https_proxy, ftp_proxy, socks_proxy);
+ }
}
}
MULTI_DEBUG_CHANNEL(emulator, osutil);
extern char tizen_target_img_path[];
-extern int tizen_base_port;
int g_shmid;
char *g_shared_memory;
int gproxytool = GCONFTOOL;
/* Getting proxy commands */
static const char* gproxycmds[][2] = {
- { "gconftool-2 -g /system/proxy/mode" , "gsettings get org.gnome.system.proxy mode" },
- { "gconftool-2 -g /system/proxy/autoconfig_url", "gsettings get org.gnome.system.proxy autoconfig-url" },
- { "gconftool-2 -g /system/http_proxy/host", "gsettings get org.gnome.system.proxy.http host" },
- { "gconftool-2 -g /system/http_proxy/port", "gsettings get org.gnome.system.proxy.http port"},
- { "gconftool-2 -g /system/proxy/secure_host", "gsettings get org.gnome.system.proxy.https host" },
- { "gconftool-2 -g /system/proxy/secure_port", "gsettings get org.gnome.system.proxy.https port" },
- { "gconftool-2 -g /system/proxy/ftp_host", "gsettings get org.gnome.system.proxy.ftp host" },
- { "gconftool-2 -g /system/proxy/ftp_port", "gsettings get org.gnome.system.proxy.ftp port" },
- { "gconftool-2 -g /system/proxy/socks_host", "gsettings get org.gnome.system.proxy.socks host" },
- { "gconftool-2 -g /system/proxy/socks_port", "gsettings get org.gnome.system.proxy.socks port" },
+ { "gconftool-2 -g /system/proxy/mode" , "gsettings get org.gnome.system.proxy mode" },
+ { "gconftool-2 -g /system/proxy/autoconfig_url", "gsettings get org.gnome.system.proxy autoconfig-url" },
+ { "gconftool-2 -g /system/http_proxy/host", "gsettings get org.gnome.system.proxy.http host" },
+ { "gconftool-2 -g /system/http_proxy/port", "gsettings get org.gnome.system.proxy.http port"},
+ { "gconftool-2 -g /system/proxy/secure_host", "gsettings get org.gnome.system.proxy.https host" },
+ { "gconftool-2 -g /system/proxy/secure_port", "gsettings get org.gnome.system.proxy.https port" },
+ { "gconftool-2 -g /system/proxy/ftp_host", "gsettings get org.gnome.system.proxy.ftp host" },
+ { "gconftool-2 -g /system/proxy/ftp_port", "gsettings get org.gnome.system.proxy.ftp port" },
+ { "gconftool-2 -g /system/proxy/socks_host", "gsettings get org.gnome.system.proxy.socks host" },
+ { "gconftool-2 -g /system/proxy/socks_port", "gsettings get org.gnome.system.proxy.socks port" },
};
void check_vm_lock_os(void)
void make_vm_lock_os(void)
{
- g_shmid = shmget((key_t)tizen_base_port, MAXLEN, 0666|IPC_CREAT);
+ int base_port;
+
+ base_port = get_emul_vm_base_port();
+
+ g_shmid = shmget((key_t)base_port, MAXLEN, 0666|IPC_CREAT);
if (g_shmid == -1) {
ERR("shmget failed\n");
perror("osutil-linux: ");
g_sprintf(g_shared_memory, "%s", tizen_target_img_path);
INFO("shared memory key: %d value: %s\n",
- tizen_base_port, (char *)g_shared_memory);
+ base_port, (char *)g_shared_memory);
if (shmdt(g_shared_memory) == -1) {
ERR("shmdt failed\n");
}
else {
ERR("fail to get pacfile fp\n");
- return -1;
+ return -1;
}
remove(pac_tempfile);
MULTI_DEBUG_CHANNEL (emulator, osutil);
extern char tizen_target_img_path[];
-extern int tizen_base_port;
static const char *pactempfile = ".autoproxy";
char *pBuf;
char *port_in_use;
char *shared_memory;
+ int base_port;
+ base_port = get_emul_vm_base_port();
shared_memory = g_strdup_printf("%s", tizen_target_img_path);
- port_in_use = g_strdup_printf("%d", tizen_base_port);
+ port_in_use = g_strdup_printf("%d", base_port);
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, /* use paging file */
NULL, /* default security */
#define __OSUTIL_H__
#include "maru_common.h"
+#include "emul_state.h"
#define HTTP_PROTOCOL "http="
#define HTTP_PREFIX "http://"
#include "sdb.h"\r
#include "include/block/nbd.h"\r
#include "tizen/src/debug_ch.h"\r
+#include "emul_state.h"\r
\r
MULTI_DEBUG_CHANNEL(qemu, sdb);\r
\r
extern char tizen_target_path[];\r
-extern int tizen_base_port;\r
\r
#ifdef _WIN32\r
\r
static void socket_close_handler( void* _fd )\r
{\r
- int fd = (int)_fd;\r
- int ret;\r
- char buff[64];\r
+ int fd = (int)_fd;\r
+ int ret;\r
+ char buff[64];\r
\r
- /* we want to drain the read side of the socket before closing it */\r
- do {\r
- ret = recv( fd, buff, sizeof(buff), 0 );\r
- } while (ret < 0 && WSAGetLastError() == WSAEINTR);\r
+ /* we want to drain the read side of the socket before closing it */\r
+ do {\r
+ ret = recv( fd, buff, sizeof(buff), 0 );\r
+ } while (ret < 0 && WSAGetLastError() == WSAEINTR);\r
\r
- if (ret < 0 && WSAGetLastError() == EWOULDBLOCK)\r
- return;\r
+ if (ret < 0 && WSAGetLastError() == EWOULDBLOCK)\r
+ return;\r
\r
- qemu_set_fd_handler( fd, NULL, NULL, NULL );\r
- closesocket( fd );\r
+ qemu_set_fd_handler( fd, NULL, NULL, NULL );\r
+ closesocket( fd );\r
}\r
\r
void socket_close( int fd )\r
{\r
- int old_errno = errno;\r
+ int old_errno = errno;\r
\r
- shutdown( fd, SD_BOTH );\r
- /* we want to drain the socket before closing it */\r
- qemu_set_fd_handler( fd, socket_close_handler, NULL, (void*)fd );\r
+ shutdown( fd, SD_BOTH );\r
+ /* we want to drain the socket before closing it */\r
+ qemu_set_fd_handler( fd, socket_close_handler, NULL, (void*)fd );\r
\r
- errno = old_errno;\r
+ errno = old_errno;\r
}\r
\r
#else /* !_WIN32 */\r
\r
void socket_close( int fd )\r
{\r
- int old_errno = errno;\r
+ int old_errno = errno;\r
\r
- shutdown( fd, SHUT_RDWR );\r
- close( fd );\r
+ shutdown( fd, SHUT_RDWR );\r
+ close( fd );\r
\r
- errno = old_errno;\r
+ errno = old_errno;\r
}\r
\r
#endif /* !_WIN32 */\r
\r
int inet_strtoip(const char* str, uint32_t *ip)\r
{\r
- int comp[4];\r
+ int comp[4];\r
\r
- if (sscanf(str, "%d.%d.%d.%d", &comp[0], &comp[1], &comp[2], &comp[3]) != 4)\r
- return -1;\r
+ if (sscanf(str, "%d.%d.%d.%d", &comp[0], &comp[1], &comp[2], &comp[3]) != 4)\r
+ return -1;\r
\r
- if ((unsigned)comp[0] >= 256 ||\r
- (unsigned)comp[1] >= 256 ||\r
- (unsigned)comp[2] >= 256 ||\r
- (unsigned)comp[3] >= 256)\r
- return -1;\r
+ if ((unsigned)comp[0] >= 256 ||\r
+ (unsigned)comp[1] >= 256 ||\r
+ (unsigned)comp[2] >= 256 ||\r
+ (unsigned)comp[3] >= 256)\r
+ return -1;\r
\r
- *ip = (uint32_t)((comp[0] << 24) | (comp[1] << 16) |\r
- (comp[2] << 8) | comp[3]);\r
- return 0;\r
+ *ip = (uint32_t)((comp[0] << 24) | (comp[1] << 16) |\r
+ (comp[2] << 8) | comp[3]);\r
+ return 0;\r
}\r
\r
int check_port_bind_listen(uint32_t port)\r
{\r
- struct sockaddr_in addr;\r
- int s, opt = 1;\r
- int ret = -1;\r
- socklen_t addrlen = sizeof(addr);\r
- memset(&addr, 0, addrlen);\r
+ struct sockaddr_in addr;\r
+ int s, opt = 1;\r
+ int ret = -1;\r
+ socklen_t addrlen = sizeof(addr);\r
+ memset(&addr, 0, addrlen);\r
\r
- addr.sin_family = AF_INET;\r
- addr.sin_addr.s_addr = INADDR_ANY;\r
- addr.sin_port = htons(port);\r
+ addr.sin_family = AF_INET;\r
+ addr.sin_addr.s_addr = INADDR_ANY;\r
+ addr.sin_port = htons(port);\r
\r
- if (((s = qemu_socket(AF_INET, SOCK_STREAM, 0)) < 0) ||\r
+ if (((s = qemu_socket(AF_INET, SOCK_STREAM, 0)) < 0) ||\r
#ifndef _WIN32\r
- (setsockopt(s, SOL_SOCKET,SO_REUSEADDR, (char *)&opt, sizeof(int)) < 0) ||\r
+ (setsockopt(s, SOL_SOCKET,SO_REUSEADDR, (char *)&opt, sizeof(int)) < 0) ||\r
#endif\r
- (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) ||\r
- (listen(s, 1) < 0)) {\r
-\r
- /* fail */\r
- ret = -1;\r
- ERR( "port(%d) listen fail \n", port);\r
- }else{\r
- /*fsucess*/\r
- ret = 1;\r
- INFO( "port(%d) listen ok \n", port);\r
- }\r
+ (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) ||\r
+ (listen(s, 1) < 0)) {\r
+\r
+ /* fail */\r
+ ret = -1;\r
+ ERR( "port(%d) listen fail \n", port);\r
+ }else{\r
+ /*fsucess*/\r
+ ret = 1;\r
+ INFO( "port(%d) listen ok \n", port);\r
+ }\r
\r
#ifdef _WIN32\r
- closesocket(s);\r
+ closesocket(s);\r
#else\r
- close(s);\r
+ close(s);\r
#endif\r
\r
- return ret;\r
+ return ret;\r
}\r
\r
-int get_sdb_base_port(void)\r
+void set_sdb_base_port(void)\r
{\r
- int tries = 10;\r
- int success = 0;\r
- uint32_t port = 26100;\r
+ int tries = 10;\r
+ int success = 0;\r
+ uint32_t port = 26100;\r
+ int base_port;\r
+\r
+ base_port = get_emul_vm_base_port();\r
\r
- if(tizen_base_port == 0){\r
+ if(base_port == 0){\r
\r
- for ( ; tries > 0; tries--, port += 10 ) {\r
- if(check_port_bind_listen(port + 1) < 0 )\r
- continue;\r
+ for ( ; tries > 0; tries--, port += 10 ) {\r
+ if(check_port_bind_listen(port + 1) < 0 )\r
+ continue;\r
\r
- success = 1;\r
- break;\r
- }\r
+ success = 1;\r
+ break;\r
+ }\r
\r
- if (!success) {\r
- ERR( "it seems too many emulator instances are running on this machine. Aborting\n" );\r
- exit(1);\r
- }\r
+ if (!success) {\r
+ ERR( "it seems too many emulator instances are running on this machine. Aborting\n" );\r
+ exit(1);\r
+ }\r
\r
- tizen_base_port = port;\r
- INFO( "sdb port is %d \n", tizen_base_port);\r
- }\r
+ base_port = port;\r
+ INFO( "sdb port is %d \n", base_port);\r
+ }\r
\r
- return tizen_base_port;\r
+ set_emul_vm_base_port(base_port);\r
}\r
\r
void sdb_setup(void)\r
{\r
- int tries = 10;\r
- int success = 0;\r
- uint32_t guest_ip;\r
- char buf[64] = {0,};\r
-\r
- inet_strtoip("10.0.2.16", &guest_ip);\r
-\r
- for ( ; tries > 0; tries--, tizen_base_port += 10 ) {\r
- // redir form [tcp:26101:10.0.2.16:26101]\r
- sprintf(buf, "tcp:%d:10.0.2.16:26101", tizen_base_port + 1);\r
- if(net_slirp_redir((char*)buf) < 0)\r
- continue;\r
-\r
- INFO( "SDBD established on port %d\n", tizen_base_port + 1);\r
- success = 1;\r
- break;\r
- }\r
-\r
- INFO("redirect [%s] success\n", buf);\r
- if (!success) {\r
- ERR( "it seems too many emulator instances are running on this machine. Aborting\n" );\r
- exit(1);\r
- }\r
-\r
- INFO( "Port(%d/tcp) listen for SDB \n", tizen_base_port + 1);\r
-\r
- /* for sensort */\r
- sprintf(buf, "tcp:%d:10.0.2.16:3577", tizen_base_port + SDB_TCP_EMULD_INDEX );\r
- if(net_slirp_redir((char*)buf) < 0){\r
- ERR( "redirect [%s] fail \n", buf);\r
- }else{\r
- INFO("redirect [%s] success\n", buf);\r
- }\r
+ int tries = 10;\r
+ int success = 0;\r
+ uint32_t guest_ip;\r
+ char buf[64] = {0,};\r
+ int number;\r
+\r
+ number = get_device_serial_number();\r
+\r
+ inet_strtoip("10.0.2.16", &guest_ip);\r
+\r
+ for ( ; tries > 0; tries--, number += 10 ) {\r
+ // redir form [tcp:26101:10.0.2.16:26101]\r
+ sprintf(buf, "tcp:%d:10.0.2.16:26101", number);\r
+ if(net_slirp_redir((char*)buf) < 0)\r
+ continue;\r
+\r
+ INFO( "SDBD established on port %d\n", number);\r
+ success = 1;\r
+ break;\r
+ }\r
+\r
+ INFO("redirect [%s] success\n", buf);\r
+ if (!success) {\r
+ ERR( "it seems too many emulator instances are running on this machine. Aborting\n" );\r
+ exit(1);\r
+ }\r
+\r
+ INFO( "Port(%d/tcp) listen for SDB \n", number);\r
+\r
+ /* for sensort */\r
+ sprintf(buf, "tcp:%d:10.0.2.16:3577", number + SDB_TCP_EMULD_INDEX );\r
+ if(net_slirp_redir((char*)buf) < 0){\r
+ ERR( "redirect [%s] fail \n", buf);\r
+ }else{\r
+ INFO("redirect [%s] success\n", buf);\r
+ }\r
}\r
\r
int sdb_loopback_client(int port, int type)\r
#define SDB_HOST_PORT 26099
-#define SDB_TCP_EMULD_INDEX 3 /* emulator daemon port */
-#define SDB_TCP_OPENGL_INDEX 4 /* opengl server port */
-#define SDB_UDP_SENSOR_INDEX 3 /* sensor server port */
+#define SDB_TCP_EMULD_INDEX 2 /* emulator daemon port */
+#define SDB_TCP_OPENGL_INDEX 3 /* opengl server port */
+#define SDB_UDP_SENSOR_INDEX 2 /* sensor server port */
void sdb_setup(void);
-int get_sdb_base_port(void);
+void set_sdb_base_port(void);
int inet_strtoip(const char* str, uint32_t *ip);
int socket_send(int fd, const void* buf, int buflen);
void socket_close(int fd);
#include "maruskin_server.h"
#include "emul_state.h"
#include "hw/maru_pm.h"
+#include "emul_state.h"
#ifdef CONFIG_HAX
#include "guest_debug.h"
extern pthread_mutex_t mutex_screenshot;
extern pthread_cond_t cond_screenshot;
-extern int tizen_base_port;
-
static void* run_timed_shutdown_thread(void* args);
static void send_to_emuld(const char* request_type,
int request_size, const char* send_buf, int buf_size);
{
char addr[128];
int s = 0;
+ int device_serial_number = get_device_serial_number();
+ snprintf(addr, 128, ":%u", (uint16_t) ( device_serial_number + SDB_TCP_EMULD_INDEX));
- snprintf(addr, 128, ":%u", (uint16_t) (tizen_base_port + SDB_TCP_EMULD_INDEX));
//TODO: Error handling
s = inet_connect(addr, NULL);
if ( s < 0 ) {
ERR( "can't create socket to emulator daemon in guest\n" );
- ERR( "[127.0.0.1:%d/tcp] connect fail (%d:%s)\n" , tizen_base_port + SDB_TCP_EMULD_INDEX , errno, strerror(errno) );
+ ERR( "[127.0.0.1:%d/tcp] connect fail (%d:%s)\n" , device_serial_number + SDB_TCP_EMULD_INDEX , errno, strerror(errno) );
return;
}
}
INFO( "send to emuld [req_type:%s, send_data:%s, send_size:%d] 127.0.0.1:%d/tcp \n",
- request_type, send_buf, buf_size, tizen_base_port + SDB_TCP_EMULD_INDEX );
+ request_type, send_buf, buf_size, device_serial_number + SDB_TCP_EMULD_INDEX );
#ifdef CONFIG_WIN32
closesocket( s );