Что касается msgrcv в ядре Android?

Я запускал набор тестов для тестирования функций, связанных с IPC, в ядре Android. пока я тестировал системный вызов msgrcv, он возвращает функцию ошибки, которая не реализована.

Так правда ли, что системный вызов msgrcv() не реализован в ядре Android, если да, то почему и какой системный вызов в ядре Android служит цели системного вызова msgrcv().

Я получил соответствующее заявление, в котором говорится, что IPC System V (включая очереди сообщений) не реализованы в Bionic. но я не уверен, что это значит.

Обновление: я могу найти определение msgrcv в ядре Android, но не уверен, почему оно возвращает функцию ошибки, которая не реализована.

Ниже фрагмент кода:

SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
                long, msgtyp, int, msgflg)
{
        return do_msgrcv(msqid, msgp, msgsz, msgtyp, msgflg, do_msg_fill);
}

Пожалуйста, прокомментируйте, если информация кажется неполной или расплывчатой, помощь приветствуется.


person Pradeep Goswami    schedule 07.01.2016    source источник


Ответы (1)


System V IPC может быть доступен в ядре, но интерфейсы системных вызовов не реализованы в Bionic lib C. Например, /bionic/libc/arch-arm/syscalls/ содержит все реализации системных вызовов по отношению к ARM.

person digitizedx    schedule 08.01.2016
comment
Спасибо за вклад. Что если я попытаюсь обойти бионические интерфейсы и попытаюсь напрямую вызвать системный вызов, возможно ли это? - person Pradeep Goswami; 08.01.2016
comment
Я не уверен, понимаю ли я, что вы имели в виду. Правильный способ — реализовать системный вызов msgrecv в bionic lib c. Найдите номер системного вызова для msgrecv из ядра и перейдите по этой ссылке из строки номер 139, androidxref.com /6.0.0_r1/xref/bionic. Вы также можете реализовать это в своем коде. Но я не уверен в лицензионных нарушениях в обоих случаях. - person digitizedx; 08.01.2016
comment
@PradeepGoswami Вы можете реализовать системные вызовы самостоятельно (достаточно примеров на SO), однако, поскольку Android становится все более и более жестким, возможно, что они не разрешают или не разрешают этот вызов через механизмы SELinux. - person auselen; 08.01.2016
comment
@PradeepGoswami что-то вроде этого stackoverflow.com/questions/12946958/system-call-in-arm - person auselen; 08.01.2016
comment
это кажется интересным - person Pradeep Goswami; 08.01.2016