2014-02-15 3 views
1

Я пытаюсь получить представление о C и разработки модулей, (после отличного примера на http://pete.akeo.ie/2011/08/writing-linux-device-driver-for-kernels.html)Является ли DEFINE_MUTEX функцией или макросом?

Теперь, что DEFINE_MUTEX? Функция? Макрос?

DEFINE_MUTEX(parrot_device_mutex); 

Если функция, в чем принцип имен UC-функций?

(. Если какие-либо больше руководств по Udev-разработки, пожалуйста, намекают)

+1

HTTP: // lxr.free-electrons.com/ident?i=DEFINE_MUTEX в значительной степени отвечает на него (первый раз попал в поиск Google). – TypeIA

+0

Лучший способ ответить на этот вопрос - сначала посмотреть в соответствующем заголовочном файле и найти 'DEFINE_MUTEX'. В документации часто объясняются ее цели. Это всего лишь общая рекомендация для любого макроса или функции или любого символа в целом, определенного из файла заголовка. И да, ALL_UPPERCASE обычно используется для макросов и/или констант времени компиляции, но это просто популярное соглашение, а не правило – Brandin

+0

@ dvnrrs, спасибо, но страница, которую вы воздаете, говорит как «Определено как макрос препроцессора», И «Определено как прототип функции ...». Как следует читать это с точки зрения noob? – Teson

ответ

3

Это MACRO

#define DEFINE_MUTEX(mutexname) struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) 

Обратитесь к Linux/включать/Linux/mutex.h

Смежные вопросы