Lines Matching full:msg
121 static size_t _recv(int rs, char *msg, size_t len) in _recv() argument
126 ret = rrecv(rs, msg + offset, len - offset, 0); in _recv()
151 static int msg_get_resp(int rs, struct msg_hdr *msg, uint8_t cmd) in msg_get_resp() argument
155 ret = msg_recv_hdr(rs, msg); in msg_get_resp()
156 if (ret != sizeof *msg) in msg_get_resp()
159 if ((msg->len != sizeof *msg) || (msg->command != (cmd | CMD_RESP))) { in msg_get_resp()
161 msg->len, msg->command, cmd | CMD_RESP); in msg_get_resp()
165 return msg->data; in msg_get_resp()
168 static void msg_send_resp(int rs, struct msg_hdr *msg, uint32_t status) in msg_send_resp() argument
173 resp.command = msg->command | CMD_RESP; in msg_send_resp()
176 resp.id = msg->id; in msg_send_resp()
229 static int server_open(int rs, struct msg_hdr *msg) in server_open() argument
242 len = msg->len - sizeof *msg; in server_open()
258 fd = open(path, O_RDWR | O_CREAT | O_TRUNC, msg->data); in server_open()
269 msg_send_resp(rs, msg, ret); in server_open()
273 static void server_close(int rs, struct msg_hdr *msg) in server_close() argument
277 msg_send_resp(rs, msg, 0); in server_close()
291 static int server_write(int rs, struct msg_hdr *msg) in server_write() argument
304 if (msg->len != sizeof(struct msg_write)) { in server_write()
305 printf("...invalid message length %d\n", msg->len); in server_write()
333 msg_send_resp(rs, msg, ret); in server_write()
339 struct msg_hdr msg; in server_process() local
343 ret = msg_recv_hdr(rs, &msg); in server_process()
344 if (ret != sizeof msg) in server_process()
347 switch (msg.command) { in server_process()
349 ret = server_open(rs, &msg); in server_process()
352 server_close(rs, &msg); in server_process()
356 ret = server_write(rs, &msg); in server_process()
359 msg_send_resp(rs, &msg, EINVAL); in server_process()
423 struct msg_open *msg; in client_open() local
446 msg = calloc(1, sizeof(*msg) + len); in client_open()
447 if (!msg) { in client_open()
452 msg->hdr.command = CMD_OPEN; in client_open()
453 msg->hdr.len = sizeof(*msg) + len; in client_open()
454 msg->hdr.data = (uint32_t) stats.st_mode; in client_open()
455 strcpy(msg->path, dst_file); in client_open()
456 ret = rsend(rs, msg, msg->hdr.len, 0); in client_open()
457 if (ret != msg->hdr.len) in client_open()
460 ret = msg_get_resp(rs, &msg->hdr, CMD_OPEN); in client_open()
467 free(msg); in client_open()
477 struct msg_write msg; in client_start_write() local
482 memset(&msg, 0, sizeof msg); in client_start_write()
483 msg.hdr.command = CMD_WRITE; in client_start_write()
484 msg.hdr.len = sizeof(msg); in client_start_write()
485 msg.size = bytes; in client_start_write()
487 ret = rsend(rs, &msg, sizeof msg, 0); in client_start_write()
488 if (ret != msg.hdr.len) in client_start_write()
496 struct msg_hdr msg; in client_close() local
501 memset(&msg, 0, sizeof msg); in client_close()
502 msg.command = CMD_CLOSE; in client_close()
503 msg.len = sizeof msg; in client_close()
504 ret = rsend(rs, (char *) &msg, msg.len, 0); in client_close()
505 if (ret != msg.len) in client_close()
508 ret = msg_get_resp(rs, &msg, CMD_CLOSE); in client_close()