Принадлежит ли библиотечная функция процессу или задаче? (И организуя функцию как библиотечную функцию)

Этот вопрос может быть неопределенным, но мне не хватает информации...

Допустим, я создаю проект (пишу на С). У меня есть две задачи, 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 нет стандартной концепции задач или процессов.

Совершенно неясно, что именно вы делаете, особенно когда начинаете говорить о ядрах и таблицах функций.

Принимая во внимание типичную систему, функции - это просто пассивные части исполняемого кода. Вы можете выполнить функцию из одной задачи, из всех задач, как вам угодно. Если имя функции видно из кода, выполняемого в конкретной задаче, этот код может вызывать функцию, и нет никакого волшебства, способного предотвратить ее посредством некоторой "ассоциации" с конкретной задачей.

Другие вопросы по тегам