Re: Asterisk+FreeBSD+MeetMe
> Что значит -1, и как настроить, чтобы было 1023?
Это наследие нестрогости линукса в отношении ioctl.
Вот, что сейчас в users.h линуксового драйвера:
#define DAHDI_GETCONF _IOR(DAHDI_CODE, 12, struct dahdi_confinfo)
#define DAHDI_SETCONF _IOW(DAHDI_CODE, 12, struct dahdi_confinfo)
Тут куча странностей.
Во первых, зачем одинаковый номер (12) ?
Во вторых почему _IOR и _IOW, а не _IOWR? Оба этих ioctl вызова, как принимаю аргумент из user space, так и отдают туда результат.
Следовательно в более строгой FreeBSD, первый ioctl (DAHDI_GETCONF) только принимает параметры и даже пытается отправить результат с номером канала для конференции, но естественно система не пропускает результат обратно из драйвера.
В DAHDI_SETCONF обратная ситуация, не получить параметра (не пропускает), зато можно вернуть результат....
И такое во многих ioctl вызовах... Толи линуксы кладут с прибором на эти определения команд ioctl(), толи еще что, но в BSD такое не прокатит.
Я в текущем транке поправил include/user.h, чтобы все работало так, как ожидается.
Только им нужно заменить уже существующий /usr/local/dahdi/users.h, пересобрать весь dahdi и заодно asterisk...
|