Привязка Ada POSIX и несколько наборов интерфейсов POSIX для IPC - PullRequest
5 голосов
/ 09 января 2020

Я смотрю на стандартную привязку Ada POSIX и реализацию Florist для GNAT. Цель состоит в том, чтобы оценить, можно ли перенести устаревшее приложение из собственного использования прагмы. Импорт функций C POSIX для использования стандартного связывания. Конечная цель состоит в том, чтобы иметь возможность перекомпилировать приложение в Solaris и Linux без изменений исходного кода. Мои сомнения касаются нескольких наборов интерфейсов, используемых в традиции UNIX для функций межпроцессного взаимодействия, таких как семафоры, очереди сообщений и т. Д. c. Флорист импортирует эти C функции:

  • Семафоры : mq_close mq_getattr mq_notify mq_open mq_receive mq_send mq_setattr mq_unlink

В то время как приложение импортирует эти другие наборы: - Семафоры: semget semop semctl - Очереди сообщений: msgctl 101 * * * * * * * * * * * * * * * * * * MSR * MSG * * * * * * * * * * * * * MSR * MSG * msg * определяет набор, используемый приложением, как System V, а не POSIX, тогда как в других они объявлены как стандартизированные IEEE Std 1003.1-2001 , который, по-видимому, является POSIX.

Мои вопросы:

  • Действительно ли наборы "System V" стандартизированы POSIX?
  • Если это POSIX, почему стандартная привязка Ada POSIX не обеспечивает привязки к ним? Являются ли они «менее POSIX», чем другие интерфейсы?
  • Если я решу перенести приложение на Florist, какие различия в поведении я должен учитывать, чтобы предотвратить регресс? Вы бы порекомендовали против этого?

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Я провел небольшое исследование и нашел два соответствующих документа от рабочей группы ISO, посвященных Аде . В документе Сводка начальной рабочей области для обновления привязок Ada POSIX IS 14519: 2001 к POSIX Draft IS 9945: 2008 и Ada 2005 приведен список функций POSIX, которые в настоящее время не поддерживаются стандартом Ada в качестве возможного расширения. Здесь упоминаются функции XSI (он же SysV IP C). Таким образом, они в настоящее время не поддерживаются.

Но они не будут в ближайшем будущем, поскольку в документе Проект протокола, Совещание № 64 говорится, что обновление было отменено. Так что пользователи должны продолжать создавать собственный интерфейс для этих функций POSIX C, я думаю.

0 голосов
/ 15 января 2020

В коллекции ASE есть две привязки POSIX. Posix1 , Posix2 связаны между собой; однако следует отметить тот факт, что коллекция ASE вышла до 2000 года, и поэтому не будет иметь этих версий.

...