Mercurial > hg > Game > Atoc
view driver/critical.c @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
line wrap: on
line source
/** * critical.c * SPE プロセスマネージャ spe_manager * クリティカルセクションに関する変数や関数など */ #include <linux/module.h> // カーネルモジュール全般 #include <linux/semaphore.h> #include <linux/spinlock.h> #include "critical.h" static struct semaphore semaphore_for_spe_pid; // SPE プロセス ID 用のセマフォ static struct semaphore semaphore_for_process_list; // プロセスリスト更新用のセマフォ static spinlock_t spinlock_for_process_list; // 同スピンロック //================================================================================================ initialize_critical() /** * initialize_critical * クリティカルセクションに関する変数の初期化 * * @return void */ void initialize_critical(void) { init_MUTEX(&semaphore_for_spe_pid); init_MUTEX(&semaphore_for_process_list); spin_lock_init(&spinlock_for_process_list); } //========================================================================================== get_semaphore_for_spe_pid() /** * get_semaphore_for_spe_pid * SPE プロセス ID 番号用のセマフォを取得する * * Note: 単なるセマフォ変数の getter であり、ロックを行うわけではない。 * * @return struct semaphore * */ struct semaphore *get_semaphore_for_spe_pid(void) { return &semaphore_for_spe_pid; } //===================================================================================== get_semaphore_for_process_list() /** * get_semaphore_for_process_list * プロセスリスト更新用のセマフォを取得する * * Note: 単なるセマフォ変数の getter であり、ロックを行うわけではない。 * * @return struct semaphore * */ struct semaphore *get_semaphore_for_process_list(void) { return &semaphore_for_process_list; } //====================================================================================== get_spinlock_for_process_list() /** * get_spinlock_for_process_list * プロセスリスト更新用のスピンロックを取得する * * Note: 単なるスピンロック変数の getter であり、ロックを行うわけではない。 * * @return spinlock_t * */ spinlock_t *get_spinlock_for_process_list(void) { return &spinlock_for_process_list; }