Почему сокет lmkd использует запись, но не отправку, он должен взаимодействовать в блочном режиме?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему сокет lmkd использует запись, но не отправку, он должен взаимодействовать в блочном режиме?

Сообщение Anonymous »

По умолчанию сокет lmkd использует запись, поэтому он будет заблокирован во время отправки данных сокета. Можно ли изменить MSG_DONTWAIT с помощью API send()

Код: Выделить всё

static int ctrl_data_write(int dsock_idx, char* buf, size_t bufsz) {
int ret = 0;
ret = TEMP_FAILURE_RETRY(write(data_sock[dsock_idx].sock, buf, bufsz));
if (ret == -1) {
ALOGE("control data socket write failed; errno=%d", errno);
} else if (ret == 0) {
ALOGE("Got EOF on control data socket");
ret = -1;
}
return ret;
}
Я тестирую следующий патч, он тоже работает
static int ctrl_data_write(int dsock_idx, char* buf, size_t bufsz) {
int рет = 0;

Код: Выделить всё

ret = TEMP_FAILURE_RETRY(send(data_sock[dsock_idx].sock, buf, bufsz, MSG_DONTWAIT));

if (ret == -1) {
ALOGE("control data socket write failed; errno=%d", errno);
} else if (ret == 0) {
ALOGE("Got EOF on control data socket");
ret = -1;
}

return ret;


Подробнее здесь: https://stackoverflow.com/questions/786 ... -block-mod
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»