static int input_connect(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; if (xenstore_read_fe_int(xendev, "request-abs-pointer", &in->abs_pointer_wanted) == -1) in->abs_pointer_wanted = 0; if (!in->c.ds) { char *vfb = xenstore_read_str(NULL, "device/vfb"); if (vfb == NULL) { /* there is no vfb, run vkbd on its own */ in->c.ds = get_displaystate(); } else { qemu_free(vfb); xen_be_printf(xendev, 1, "ds not set (yet)\n"); return -1; } } rc = common_bind(&in->c); if (rc != 0) return rc; qemu_add_kbd_event_handler(xenfb_key_event, in); in->qmouse = qemu_add_mouse_event_handler(xenfb_mouse_event, in, in->abs_pointer_wanted, "Xen PVFB Mouse"); return 0; }
int main(int argc, char* argv[]) { int listenfd, connfd; struct sockaddr_in addr; char buf[256]; time_t tick; network_init(); listenfd = common_socket(AF_INET, SOCK_STREAM, 0); addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_family = AF_INET; addr.sin_port = htons(5555); common_bind(listenfd, (struct sockaddr*)&addr, sizeof(addr)); common_listen(listenfd, 5); for (;;) { connfd = common_accept(listenfd, NULL, NULL); tick = time(NULL); snprintf(buf, sizeof(buf), "%.24s\r\n", ctime(&tick)); common_write(connfd, buf, strlen(buf)); common_close(connfd); } common_close(listenfd); network_destroy(); return 0; }
int main(int argc, char* argv[]) { int listenfd; int clientfd; struct sockaddr_in addr; socklen_t addrlen; network_init(); listenfd = common_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_family = AF_INET; addr.sin_port = htons(5555); common_bind(listenfd, (struct sockaddr*)&addr, sizeof(addr)); common_listen(listenfd, SOMAXCONN); printf("echo server start sucess !!!\n"); for (;;) { addrlen = sizeof(addr); clientfd = common_accept(listenfd, (struct sockaddr*)&addr, &addrlen); CreateThread(NULL, 0, echo_process, &clientfd, 0, NULL); } common_close(listenfd); network_destroy(); return 0; }
static int input_initialise(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; rc = common_bind(&in->c); if (rc != 0) return rc; return 0; }
static int input_initialise(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; if (!in->c.con) { xen_be_printf(xendev, 1, "ds not set (yet)\n"); return -1; } rc = common_bind(&in->c); if (rc != 0) return rc; qemu_add_kbd_event_handler(xenfb_key_event, in); return 0; }
static int fb_connect(struct XenDevice *xendev) { struct XenFB *fb = container_of(xendev, struct XenFB, c.xendev); struct xenfb_page *fb_page; int videoram; int rc; if (xenstore_read_fe_int(xendev, "videoram", &videoram) == -1) videoram = 0; rc = common_bind(&fb->c); if (rc != 0) return rc; fb_page = fb->c.page; rc = xenfb_configure_fb(fb, videoram * 1024 * 1024U, fb_page->width, fb_page->height, fb_page->depth, fb_page->mem_length, 0, fb_page->line_length); if (rc != 0) return rc; rc = xenfb_map_fb(fb); if (rc != 0) return rc; #if 0 /* handled in xen_init_display() for now */ if (!fb->have_console) { fb->c.ds = graphic_console_init(xenfb_update, xenfb_invalidate, NULL, NULL, fb); fb->have_console = 1; } #endif if (xenstore_read_fe_int(xendev, "feature-update", &fb->feature_update) == -1) fb->feature_update = 0; if (fb->feature_update) xenstore_write_be_int(xendev, "request-update", 1); xen_be_printf(xendev, 1, "feature-update=%d, videoram=%d\n", fb->feature_update, videoram); return 0; }
static int input_connect(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; if (xenstore_read_fe_int(xendev, "request-abs-pointer", &in->abs_pointer_wanted) == -1) in->abs_pointer_wanted = 0; rc = common_bind(&in->c); if (rc != 0) return rc; qemu_add_kbd_event_handler(xenfb_key_event, in); in->qmouse = qemu_add_mouse_event_handler(xenfb_mouse_event, in, in->abs_pointer_wanted, "Xen PVFB Mouse"); return 0; }
status_t _user_bind(int socket, const struct sockaddr *userAddress, socklen_t addressLength) { // check parameters and copy address from userland if (userAddress == NULL || addressLength > MAX_SOCKET_ADDRESS_LENGTH) return B_BAD_VALUE; sockaddr_storage address; if (!IS_USER_ADDRESS(userAddress) || user_memcpy(&address, userAddress, addressLength) != B_OK) { return B_BAD_ADDRESS; } address.ss_len = addressLength; // make sure the sa_len field is set correctly SyscallRestartWrapper<status_t> error; return error = common_bind(socket, (sockaddr*)&address, addressLength, false); }
static int input_initialise(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; if (!in->c.ds) { char *vfb = xenstore_read_str(NULL, "device/vfb"); if (vfb == NULL) { /* there is no vfb, run vkbd on its own */ in->c.ds = get_displaystate(); } else { g_free(vfb); xen_be_printf(xendev, 1, "ds not set (yet)\n"); return -1; } } rc = common_bind(&in->c); if (rc != 0) return rc; qemu_add_kbd_event_handler(xenfb_key_event, in); return 0; }
int bind(int socket, const struct sockaddr *address, socklen_t addressLength) { SyscallFlagUnsetter _; RETURN_AND_SET_ERRNO(common_bind(socket, address, addressLength, true)); }