task.c

タスク管理モジュール [詳細]

#include "fdmp_kernel.h"
#include "task.h"
#include "cpu_context.h"

task.cのインクルード依存関係図

ソースコードを見る。

マクロ定義

#define PRIMAP_BIT(pri)   (1u << (pri))
 ビットマップサーチ関数

型定義

typedef void(* TEXRTN )(TEXPTN texptn, VP_INT exinf)
 引数まで定義したタスク例外処理ルーチンの型

関数

Inline UINT bitmap_search (UINT bitmap)


説明

タスク管理モジュール

task.c で定義されています。


マクロ定義

#define PRIMAP_BIT pri   )     (1u << (pri))
 

ビットマップサーチ関数

bitmap 内の 1 のビットの内,最も下位(右)のものをサーチし,そのビ ット番号を返す.ビット番号は,最下位ビットを 0 とする.bitmap に 0 を指定してはならない.この関数では,優先度が16段階以下であることを 仮定し,bitmap の下位16ビットのみをサーチする. ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように 書き直した方が効率が良いだろう.このような場合には,cpu_insn.h で ビットサーチ命令を使った bitmap_search を定義し,CPU_BITMAP_SEARCH をマクロ定義すればよい.また,ビットサーチ命令のサーチ方向が逆など の理由で優先度とビットとの対応を変更したい場合には,PRIMAP_BIT を マクロ定義すればよい. また,標準ライブラリに ffs があるなら,次のように定義して標準ライ ブラリを使った方が効率が良い可能性もある. define bitmap_search(bitmap) (ffs(bitmap) - 1)

task.c176 行で定義されています。


型定義

typedef void(* TEXRTN)(TEXPTN texptn, VP_INT exinf)
 

引数まで定義したタスク例外処理ルーチンの型

task.c406 行で定義されています。


関数

Inline UINT bitmap_search UINT  bitmap  ) 
 

task.c182 行で定義されています。

参照先 assert.

00183 {
00184     static const VB search_table[] = { 0, 1, 0, 2, 0, 1, 0,
00185                     3, 0, 1, 0, 2, 0, 1, 0 };
00186     INT n = 0;
00187 
00188     assert((bitmap & 0xffff) != 0);
00189     if ((bitmap & 0x00ff) == 0) {
00190         bitmap >>= 8;
00191         n += 8;
00192     }
00193     if ((bitmap & 0x0f) == 0) {
00194         bitmap >>= 4;
00195         n += 4;
00196     }
00197     return(n + search_table[(bitmap & 0x0f) - 1]);
00198 }


Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:18 2006 に Doxygen によって生成されました。