Принадлежит ли библиотечная функция процессу или задаче? (И организуя функцию как библиотечную функцию)
Этот вопрос может быть неопределенным, но мне не хватает информации...
Допустим, я создаю проект (пишу на С). У меня есть две задачи, A_task и B_task.
Мне нужна функция, которая будет вызываться как из A_task, так и из B_task. Это будет специальная функция (скажем, func_A), поэтому она будет работать как библиотечная функция.
Итак, расстановка файлов проекта. У меня есть два списка файлов: один для A_task и один для B_task. Если я добавлю файл.c, который содержит func_A, в список файлов A_task, функция будет автоматически принадлежать A_task. (?)
После этого я зарегистрирую адрес func_A в таблице глобальных функций в пространстве ядра, чтобы другие задачи могли вызывать эту функцию через таблицу глобальных функций.
Мой вопрос о функции, относящейся к определенной задаче. Как бы я ни организовывал таблицу глобальных функций, похоже, что вызываемая функция относится к определенной задаче. Таким образом, B_task вызывает func_A через глобальную таблицу функций, но func_A принадлежит A_task, так, например, проснется ли A_task?
1 ответ
Нет.
Функции не "принадлежат" задачам, процессам или чему-либо еще в C. Тем более, что в C нет стандартной концепции задач или процессов.
Совершенно неясно, что именно вы делаете, особенно когда начинаете говорить о ядрах и таблицах функций.
Принимая во внимание типичную систему, функции - это просто пассивные части исполняемого кода. Вы можете выполнить функцию из одной задачи, из всех задач, как вам угодно. Если имя функции видно из кода, выполняемого в конкретной задаче, этот код может вызывать функцию, и нет никакого волшебства, способного предотвратить ее посредством некоторой "ассоциации" с конкретной задачей.