Changeset d9ce049 in mainline for uspace/srv/net/tl/tcp/state.c
- Timestamp:
- 2011-10-04T20:40:05Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8c7a054
- Parents:
- 32105348
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tl/tcp/state.c
r32105348 rd9ce049 35 35 */ 36 36 37 #include <fibril_synch.h> 37 38 #include <io/log.h> 38 39 #include <macros.h> … … 107 108 xflags_t *xflags) 108 109 { 110 size_t xfer_size; 111 109 112 log_msg(LVL_DEBUG, "tcp_uc_receive()"); 113 114 fibril_mutex_lock(&conn->rcv_buf_lock); 115 116 /* Wait for data to become available */ 117 while (conn->rcv_buf_used == 0) { 118 log_msg(LVL_DEBUG, "tcp_uc_receive() - wait for data"); 119 fibril_condvar_wait(&conn->rcv_buf_cv, &conn->rcv_buf_lock); 120 } 121 122 /* Copy data from receive buffer to user buffer */ 123 xfer_size = min(size, conn->rcv_buf_used); 124 memcpy(buf, conn->rcv_buf, xfer_size); 125 *rcvd = xfer_size; 126 127 /* Remove data from receive buffer */ 128 memmove(conn->rcv_buf, conn->rcv_buf + xfer_size, conn->rcv_buf_used - 129 xfer_size); 130 conn->rcv_buf_used -= xfer_size; 131 conn->rcv_wnd += xfer_size; 132 133 fibril_mutex_unlock(&conn->rcv_buf_lock); 134 135 /* TODO */ 136 *xflags = 0; 137 138 /* Send new size of receive window */ 139 tcp_tqueue_ctrl_seg(conn, CTL_ACK); 140 141 log_msg(LVL_DEBUG, "tcp_uc_receive() - returning %zu bytes", 142 xfer_size); 110 143 } 111 144
Note:
See TracChangeset
for help on using the changeset viewer.