XINU
Functions
init.c File Reference

デバイスとデバイスドライバを初期化する。 More...

#include <xinu.h>
Include dependency graph for init.c:

Go to the source code of this file.

Functions

syscall init (did32 descrp)
 デバイスとデバイスドライバを初期化する。 More...
 

Detailed Description

デバイスとデバイスドライバを初期化する。

Definition in file init.c.

Function Documentation

◆ init()

syscall init ( did32  descrp)

デバイスとデバイスドライバを初期化する。

Step1. 割り込みを禁止する。
Step2. デバイスディスクリプタが不正値の場合は、割り込み状態を復元し、処理を終了する。
Step3. デバイス固有の初期化処理を実施する。
Step4. 割り込み許可状態に復元する。

Parameters
[in]descrpデバイスディスクリプタ
Returns
成功時はデバイスに応じた返り値、デバイスディスクリプタが不正値の場合はSYSERRを返す。

Definition at line 17 of file init.c.

References devtab, disable(), dentry::dvinit, isbaddev, restore(), and SYSERR.

Referenced by sysinit().

18 {
19  intmask mask; /* Saved interrupt mask */
20  struct dentry *devptr; /* Entry in device switch table */
21  int32 retval; /* Value to return to caller */
22 
23  mask = disable();
24  if (isbaddev(descrp))
25  {
26  restore(mask);
27  return SYSERR;
28  }
29  devptr = (struct dentry *)&devtab[descrp];
30  retval = (*devptr->dvinit)(devptr);
31  restore(mask);
32  return retval;
33 }
void restore(intmask)
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
devcall(* dvinit)(struct dentry *)
Definition: conf.h:10
Definition: conf.h:6
struct dentry devtab[]
Definition: conf.c:11
uint32 intmask
保存された割り込みマスク
Definition: kernel.h:38
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
#define isbaddev(f)
デバイスIDを検証するマクロ。
Definition: device.h:15
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
Here is the call graph for this function:
Here is the caller graph for this function: