/* * Sends a response to a command continuation request. */ int send_continuation(session *ssn, const char *data, size_t len) { if (ssn->socket == -1) return -1; if (socket_write(ssn, data, len) == -1 || socket_write(ssn, "\r\n", strlen("\r\n")) == -1) return -1; if (opts.debug) { unsigned int i; debug("sending continuation data (%d):\n\n", ssn->socket); for (i = 0; i < len; i++) debugc(data[i]); debug("\r\n\n"); } return 0; }
int mrb_freertos_rwlock_unlock(mrb_state *mrb, mrb_rwlock_t *lock) { debugc('U'); xSemaphoreHandle mutex = (xSemaphoreHandle)lock->rwlock; if (mutex == NULL) { return RWLOCK_STATUS_INVALID_ARGUMENTS; } if (pdTRUE == xSemaphoreGiveRecursive(mutex)) { debugc('u'); return RWLOCK_STATUS_OK; }else{ debugc('X'); return RWLOCK_STATUS_UNKNOWN; /*maybe give(unlock) without take(lock) called*/ } }
int mrb_freertos_rwlock_wrlock(mrb_state *mrb, mrb_rwlock_t *lock, uint32_t timeout_ms) { debugc('L'); xSemaphoreHandle mutex = (xSemaphoreHandle)lock->rwlock; if (mutex == NULL) { return RWLOCK_STATUS_INVALID_ARGUMENTS; } portTickType timeout_tick = timeout_ms / portTICK_RATE_MS; if (pdTRUE == xSemaphoreTakeRecursive(mutex, timeout_tick)) { debugc('l'); return RWLOCK_STATUS_OK; }else{ debugc('x'); return RWLOCK_STATUS_TIMEOUT; } }
/* * Read data the server sent. */ int receive_response(session *ssn, char *buf) { ssize_t n; if ((n = socket_read(ssn, buf, INPUT_BUF)) == -1) return -1; if (opts.debug > 0) { int i; debug("getting response (%d):\n\n", ssn->socket); for (i = 0; i < n; i++) debugc(buf[i]); debug("\n"); } return n; }
/* * Read data the server sent. */ int receive_response(session *ssn, char *buf, long timeout, int timeoutfail) { ssize_t n; if ((n = socket_read(ssn, buf, INPUT_BUF, timeout ? timeout : (long)(get_option_number("timeout")), timeoutfail)) == -1) return -1; if (opts.debug) { int i; debug("getting response (%d):\n\n", ssn->socket); for (i = 0; i < n; i++) debugc(buf[i]); debug("\n"); } return n; }