Здравствуйте Сеньори, изучаю сейчас исходные коды ядра Linux конкретно меня очень интересует тема процессов, семафоров и мьютексов, скачал версию ядра 3.15 распечатал себе семафор на 6 листов 4-ри листа понял а 5-тый и 6-той не доконца вообще не дошло что там происходит ( или функции завершаются или что то другое). Вообщем пожалуйста подкасиже или направте на истиный путь как вазобратся в этом куске?
static noinline void __sched __down(struct semaphore *sem)
{
__down_common(sem, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
}
static noinline int __sched __down_interruptible(struct semaphore *sem)
{
return __down_common(sem, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
}
static noinline int __sched __down_killable(struct semaphore *sem)
{
return __down_common(sem, TASK_KILLABLE, MAX_SCHEDULE_TIMEOUT);
}
static noinline int __sched __down_timeout(struct semaphore *sem, long jiffies)
{
return __down_common(sem, TASK_UNINTERRUPTIBLE, jiffies);
}
static noinline void __sched __up(struct semaphore *sem)
{
struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list,
struct semaphore_waiter, list);
list_del(&waiter->list);
waiter->up = true;
wake_up_process(waiter->task);
}