Mona


OS>Mona

  • IDマネージャ
  • オブジェクトマネージャ

Hack

Utility

  • string.cpp
  • purevirtual.cpp
  • Semaphore.cpp Semaphore.h セマフォ
    • 割り込み禁止
  • BitMap?.cpp
  • Queue.h キュー

PC/AT Device

  • io.cpp
  • disp.cpp
  • FAT12.cpp
  • FDCDriver.cpp
  • IDEDriver.cpp
  • ISADriver.cpp
  • pic.cpp タイマー割り込み

Kernel

  • kernel.cpp
    • 0-1GBがカーネル領域
  • syscalls.cpp
    • put_pixel
    • exit
    • syscall_print
    • exit_kernel_lock_mode
    • enter_kernel_lock_mode
    • syscall_heavy //システムコール実験用
  • include/Segments.h
    • SharedMemoryObject?
  • Segments.cpp
    • スタック自動伸張
    • 共有メモリ機構
  • PageManager?.cpp
    • 共有map
    • スタック StackSegment?
    • ヒープ HeapSegment?
  • Process.cpp
  • ProcessManager?.cpp
    • kill
  • Scheduler.cpp
  • MemoryManager?.cpp
  • ihandlers.cpp
  • GraphicalConsole?.cpp
  • include/Message.h
    • Queueを継承
  • MessageServer?.cpp

Test code

  • tester.cpp
  • test_higepon.cpp

Semaphore.cpp

00028 void Semaphore::up(semaphore* sem) {
00029 
00030     ++(*sem);	// ++を前に
00031     return;
00032 }
00041 int Semaphore::down(semaphore* sem) {
00042 
00043     dword eflags = get_eflags();
00044     disableInterrupt();	// 割り込み禁止
00045 
00046     if (*sem) {
00047         --(*sem);	// --を前に
00048         set_eflags(eflags);
00049         return 0;
00050     } else {
00051         set_eflags(eflags);
00052         return -1;
00053     }
00054 }
  • 0と-1というマジックナンバーはこのままでいいのか?

関連

External Links

備考


索引