Какие функции выделения памяти можно вызывать из среды прерываний в AIX?
xmalloc может использоваться в среде процесса только тогда, когда я пишу расширение ядра AIX.
Какие функции выделения памяти можно вызывать из среды прерываний в AIX?
Благодарю.
1 ответ
The network memory allocation routines. Look in /usr/include/net/net_malloc.h. The lowest level is net_malloc and net_free.
I don't see much documentation in IBM's pubs nor the internet. There are a few examples in various header files.
There is public no prototype that I can find for these.
Если вы посмотрите на файл net_malloc.h, вы увидите макросы MALLOC и NET_MALLOC, определенные для его вызова. Затем, если вы введете grep во все файлы в / usr / include, вы увидите использование этих макросов. Из этих применений вы можете вывести аргументы к макросам и, таким образом, вывести аргументы для самого net_malloc. Я сделал бы одну подпрограмму, которая является проходом к net_malloc, к которому вы управляли интерфейсом.
В вашей целевой системе выполните "netstat -m". Последний размер сегмента, который вы видите, будет наибольшим размером, который вы можете вызвать с помощью net_malloc с флагом M_NOWAIT. M_WAIT может использоваться только во время процесса и ожидает, когда netm выделит больше памяти, если это необходимо. M_NOWAIT возвращается с 0, если недостаточно закрепленной памяти. Во время прерывания вы должны использовать M_NOWAIT.
Нет реальной проверки для "типа", но лучше выбрать подходящий тип для целей отладки позже. Вывод netm из kdb показывает тип.
Аналогичным образом вы можете выяснить, как вызывать net_free.
Его печальная IBM решила не документировать это. Альтернативой официальному получению этой информации является оплата вопроса ISV. Если вы занимаетесь серьезной разработкой AIX, вы хотите стать независимым разработчиком / партнером. Это спасет вас от многих разрывов сердца. Я не знаю стоимость, но она доступна для небольших компаний и даже частных лиц.
Эту книгу тоже приятно иметь.