CQ出版：SWESTまとめ。「名古屋のIoTは名古屋のOSで」（１０）

SWESTは、組込みシステム技術に関するサマーワークショップ(Summer Workshop on Embedded System Technologies)
http://swest.toppers.jp
の略で、東海・北陸地方に１泊２日で実施している合宿です。

QC出版の協賛ではんだづけ大会を何度か開催させていただきました。
ありがとうございます。

Qiitaで"SWEST"で検索した記事に関連するSWESTの行事に対応付けしました。
そして、それらの記事の中で、プログラムとして重要だったり、コマンドとして知っていると良かったり、
簡単な操作を間違えてとんでもないことになることなど、プログラマの深部または細部を掘り起こしてみます。

以下、講義・演習名は、見出しにするか、＜＞で囲って示します。
関連するqiita記事をその下にURLと示します。補足として、slideshare, researchmap.jp, amazon.co.jpなどへのリンクも記載します。

 <この項は書きかけです。順次追記します。>
# SWEST20
2018年のSWESTは、
開催日程: 2018年8月29日(水)〜31日(金) (20周年を祝して8月29日(水)に前夜祭を行います！)
開催場所: 下呂温泉 水明館 (岐阜県下呂市)
メインテーマ: future = SWEST(&you) + dream;

SWEST20で基調講演(再演含む）してほしい人上位10人
https://qiita.com/kaizen_nagoya/items/d4d9bf953953c720361d

# SWEST19
＜プログラム＞
https://swest.toppers.jp/SWEST19/program/

## Deep Learning導入のための読書会
「ゼロから作るDeep Learning ２自然言語処理編」を読む前に読んで置くとよい資料とプログラム
https://qiita.com/kaizen_nagoya/items/537b1810265bbbc70e73

名古屋のIoTは名古屋のOSで Raspberry PI & TOPPERS
https://qiita.com/kaizen_nagoya/items/4c46153324a8081fe18c

## HAZOP 3.0 (Safety & Security)
ちょけねこ　たんじょうびのおくりもの
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e


# SWEST18
<プログラム>
https://swest.toppers.jp/SWEST18/program/

<がじぇっとルネサスのGR-COTTONプレゼントキャンペーン>
GR-COTTONで赤外線リモコンの受信機を作ってみた
https://qiita.com/farmer-bism/items/56ca974926fc5c55207c

## 確率論及統計論 輪講
確率論及統計論（伏見康司）の数式をTeX(LaTeX)入力するための13の技法
https://qiita.com/kaizen_nagoya/items/9c692c4d3546ffbb70b4

 確率論及統計論　輪講	    科学の四分類と確率分布
https://www.slideshare.net/kaizenjapan/ss-65852140


# SWEST17
<プログラム>
https://swest.toppers.jp/SWEST17/program.html

## 組込み開発者におくる MISRA C:2012 　 - 日本語解説書ができるまで
[C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

## カーネルソースの歩き方 RaspberryPi演習
カーネルソース勉強会の資料：カーネルソースの歩き方 RaspberryPi演習 - SWEST
https://swest.toppers.jp/SWEST17/data/s5d_proceeding.pdf

取り上げたTOPPERS/SSPのtask.cの中身はこの頁の末尾に。MISRA Cの検査済み。

算譜(program)の見直し(review)に必要な志向・技能・技法・手順、上位７ver.2.1 (20180228)
https://qiita.com/kaizen_nagoya/items/6d5962e1a0e4be28405c

# SWEST16
＜プログラム＞
https://swest.toppers.jp/SWEST16/program.html

## 自動車業界外の開発者のためのMISRA-C入門
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

## カーネルソースの歩き方 TOPEPRS/SSP編
TOPPERS/SSPカーネルソース勉強会(0) docker, build_ssp.sh, build_ssp_ruby.sh
https://qiita.com/kaizen_nagoya/items/20e382d58c6dd0e40534

## 再現試験を実施できるようなソフトウェア試験技術者への道
算譜(program)の見直し(review)に必要な志向・技能・技法・手順、上位７
https://qiita.com/kaizen_nagoya/items/6d5962e1a0e4be28405c

# SWEST15
＜プログラム＞
https://swest.toppers.jp/SWEST15/program.html

## .NET Micro Framework 実践紹介
名古屋のIoTは名古屋のOSで Raspberry PI & TOPPERS
https://qiita.com/kaizen_nagoya/items/4c46153324a8081fe18c

## 何が嬉しい？何が変わった？MISRA-C：2012
プログラマが学会・研究会で対外発表する際の９つの関門
https://qiita.com/kaizen_nagoya/items/b66b0bb7eb70b30082c8

## HAZOP
効率的なHAZOPの進め方
https://qiita.com/kaizen_nagoya/items/2b8eae196945b7976446

## mrubyによる組込み開発のメリット
記事振り返りと今後のMicroPythonへの期待
https://qiita.com/ken5owata/items/2440bca9cf58e7c9cee0

# SWEST14
＜プログラム＞
https://swest.toppers.jp/SWEST14/program.html

## 組込みRubyとその開発事例
mruby まとめ 作成中
https://qiita.com/kaizen_nagoya/items/3c721e1338d41e2fc805

## ソフトウェアデザインロボットコンテストを通した若手組込みエンジニアの育成
ETロボコン　まとめ　言語の知見
https://qiita.com/kaizen_nagoya/items/908df06d1a9aa9535d00

## 今更聞けないマルチコアプログラミングの基礎

## 世界に通用する技術者になるためには(仮)


# SWEST13
＜プログラム＞
https://swest.toppers.jp/SWEST13/program.html

## 目で見てわかるモデル検査
NuSMV入門
https://qiita.com/kaizen_nagoya/items/49fce418443f704ffec9

## 想定外をなくす 実践安全分析(HAZOP) 2.0
ちょけねこ　たんじょうびのおくりもの
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e

## 組込みシステムに関する教育事例の紹介
プログラミング言語教育のXYZ
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

## OCamlと定理証明支援系Coqの組込み開発への応用を目指して
OCAML入門
https://qiita.com/kaizen_nagoya/items/456bedf9f68b512663da
「coq入門」の入門
https://qiita.com/kaizen_nagoya/items/13566f0b2083ea8d4998

## TOPPERS Reference Hardware (TRH-α1) の提案と試作


# SWEST12
＜プログラム＞
https://swest.toppers.jp/SWEST12/program.html

## XDDP：派生開発専用の開発アプローチ

## 実践HAZOP実習
ちょけねこ　たんじょうびのおくりもの
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e

## 実践形式手法 Event-B

## コンソーシアム型研究によるRTOSのテストスイート開発


# SWEST11
＜プログラム＞
https://swest.toppers.jp/SWEST11/program.html

## MISRA-C/C++およびRTL設計スタイルガイドの組込み技術者教育への展開
[C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

RTL設計スタイルガイド Verilog HDL編
https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

## 組込みシステム開発に関連する国際規格 - HAZOPを中心に
効率的なHAZOPの進め方
https://qiita.com/kaizen_nagoya/items/2b8eae196945b7976446

## ETロボコンとは？
ETロボコン　まとめ　言語の知見
https://qiita.com/kaizen_nagoya/items/908df06d1a9aa9535d00

## 80分で分かるモデル検証
SPIN(simple promela interpreter)入門
https://qiita.com/kaizen_nagoya/items/a18a4e1e5493591e76fa

## Interface付録ボードを実際に動かしてみる

# SWEST10
＜プログラム＞
https://swest.toppers.jp/SWEST10/program.html

## スタイルガイドを用いたVerilog教育の成果と課題
### Verilogスタイルガイドこんなコードもコンパイルエラーにならない
RTL設計スタイルガイド Verilog HDL編
https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

## 組込み関連国際規格の動向
[C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

## 可読性って何だろう 〜 コーディングルールをどう使う？
MISRA C まとめ #include 
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

## 実践！なぜなぜ分析 パート２

# SWEST9
＜プログラム＞
https://swest.toppers.jp/SWEST9/program.html

## 実践！なぜなぜ分析

# SWEST8
＜プログラム＞
https://swest.toppers.jp/SWEST8/report.html#report

## MISRAとSECのコーディングガイドライン
MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

# SWEST7
＜プログラム＞
https://swest.toppers.jp/SWEST7/report.html#report

## 子供向けコンピュータ教育の教材作成
ETロボコン　まとめ　言語の知見
https://qiita.com/kaizen_nagoya/items/908df06d1a9aa9535d00

ちょけねこ　たんじょうびのおくりもの
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e

## モデル検査ツールSpinによる組み込みソフトウェアの検証
SPIN(simple promela interpreter)入門
https://qiita.com/kaizen_nagoya/items/a18a4e1e5493591e76fa

# SWEST6
＜プログラム＞
https://swest.toppers.jp/SWEST6/report.html#program

## 組み込みシステムの試験と検証 OS、コンパイラ、ネットワーク
算譜(program)の見直し(review)に必要な志向・技能・技法・手順、上位７
https://qiita.com/kaizen_nagoya/items/6d5962e1a0e4be28405c

# SWEST5
＜プログラム＞
https://swest.toppers.jp/SWEST5/report.html#program

## 宇宙用OS及び開発環境の研究開発
NUCLEO-F401RE で TOPPERS/HRP2(RTOS)を動かす
https://qiita.com/exshonda/items/fe9525df165b9910bf93

## UMLロボコンとMDA
ETロボコン　まとめ　言語の知見
https://qiita.com/kaizen_nagoya/items/908df06d1a9aa9535d00

## 組込みソフトウェア徒弟制度
作業診断(process assessment)を成功させる５つの鍵。失敗する５つの罠 。仮説（50）OSEK(48）官（２）
https://qiita.com/kaizen_nagoya/items/bcdc60db20e8d7081fab
算譜(program)の見直し(review)に必要な指向, 技能, 技法, 手順 上位７, 仮説(188) coding(72), 図(26)
https://qiita.com/kaizen_nagoya/items/6d5962e1a0e4be28405c

# SWEST4
＜プログラム＞
https://swest.toppers.jp/SWEST4/report.html#program

## 組込みソフトウェアにおけるSPI（CMM/SPA）
作業診断(process assessment)を成功させる５つの鍵。失敗する５つの罠 ver.3.1 20180205
https://qiita.com/kaizen_nagoya/items/bcdc60db20e8d7081fab

## 自動車向け組込みＣ言語用ガイドライン MISRA-Cに代表される バグ予防と設計改善のためのプログラミングガイドライン 〜海外製の組込みシステムに勝てる品質向上〜
MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

## 組込みソフトウェア開発技術者教育
プログラミング言語教育のXYZ
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

# SWEST3
＜プログラム＞
https://swest.toppers.jp/SWEST3/report.html#program

## 使用する側から見たReal Time OS の現状と要望』
RealTimeOS（ITRON）の基本のキから新しいプロジェクトの提案までユーザからみたRTOSの動向  ITRON基本のキ
TOPPERS まとめ
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

# SWEST2
＜プログラム＞
https://swest.toppers.jp/SWEST2/index.html#program

## 組み込みシステムのためのソフトウェア開発ライフサイクル論
作業診断(process assessment)を成功させる５つの鍵。失敗する５つの罠 ver.3.1 20180205
https://qiita.com/kaizen_nagoya/items/bcdc60db20e8d7081fab

## 組込み装置向きプログラミング言語 EBIFRY

## ITRON C++ API仕様へのアプローチ

# SWEST1
＜プログラム＞
https://swest.toppers.jp/SWEST1/index.html#program

## タイミングチャートを用いたデバイスドライバ設計支援に関する研究
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=134172&file_id=1&file_no=1

## 組込み向け制御ソフトウェア設計手法『データ回路方式』の提案
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=131002&file_id=1&file_no=1

## 次世代ソフトウェア開発支援ツール
浅井茂昌(アイシン精機),和田錦一,稲森豊,佐野範佳(豊田中央研究所)

# 基調講演関連資料

## 第一回　組込みシステムの過去・現在・未来　イデオムレベルのソフトウェアデザインパターン
故　松本 吉弘（大阪工業大学 情報科学部）
「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

## 第二回　チャレンジ＆チャレンジ　今、日本に必要とされるチャレンジ　
鈴木 文雄（アーベル・システムズ）

## 第三回　コンフィギュアラブルプロセッサによるITS向け画像認識システムの開発  
宮森 高（東芝）

## 第四回 移動体電話の開発 
菰田 元喜（NECネットワークス）

## 第五回 災害救助からエンタテインメントまで 未来のＩＴとロボットの行方
松原 仁（はこだて未来大学）

## 第六回　宇宙機の搭載ソフトウェア 
奥田 一実（宇宙航空研究開発機構）

## 第七回　デジタル家電統合プラットフォームUniPhier におけるメディアプロセッサ　
木村 浩三、藤井 茂樹、西道 佳人、清原 督三（松下電器）

## 第八回　機能安全規格の意図と動向について　
田邊 安雄(日本機能安全)

## 第九回　現場力を高める見える化手法プロジェクトファシリテーション　モチベーションアップのツールと場づくり　
平鍋健児（チェンジビジョン）

#第十回「組込みシステム開発の次の10年を考える」 
高田 広章（名古屋大学）　

## 第十一回　人工衛星プロジェクト　本命ミッションは人づくり！
竹内 修　（東大阪宇宙開発協同組合＜SOHLA＞前理事長）

## 第十二回　 XDDP：派生開発専用の開発アプローチ 
故　清水 吉男 （システムクリエイツ）

## 第十三回　最新Androidケータイの製品技術と開発苦労話 
本田 亮 （富士通） 

## 第十四回　世界に通用する技術者になるためには(仮) 
まつもと ゆきひろ （株式会社ネットワーク応用研究所） 
mruby まとめ 作成中
https://qiita.com/kaizen_nagoya/items/3c721e1338d41e2fc805

## 第十五回　モデルベースシステムズエンジニアリングとSysMLの活用　
西村 秀和（慶應義塾大学）

## 第十六回　SKY ACTIVエンジン開発　
人見 光夫 (マツダ株式会社)

## 第十七回　ウェアラブルシステム・デバイス・応用の現状とこれから　
塚本 昌彦（神戸大学）

## 第十八回　二輪車情報学 Bikeinformatics　自動二輪車によるセンシングデータの収集基盤の構築と課題　
木谷 友哉（静岡大学）

## 第十九回　Connected Vehicle Platformにおける北米技術動向と、日本の大学生・若手技術者への期待　
佐藤 洋介（DENSO International America, INC., North America Research Center, Electronics Platform(e–PF))

# その他
＜これはSWESTプログラムページの html ファイルを parcel でビルドしようとして遭遇した不具合です。＞
parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら，とても歓待された
https://qiita.com/zacky1972/items/0ce05454b67506edc634

# 共催者
## NPO法人 　TOPPERSプロジェクト
TOPPERS まとめ
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

## NPO法人 軽量Rubyフォーラム
mruby まとめ 作成中
https://qiita.com/kaizen_nagoya/items/3c721e1338d41e2fc805

## 組込みシステム開発技術研究会(CEST)

# 参考資料

```task.c
/*
 *  TOPPERS/SSP Kernel
 *      Smallest Set Profile Kernel
 *
 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
 *                              Toyohashi Univ. of Technology, JAPAN
 *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
 *              Graduate School of Information Science, Nagoya Univ., JAPAN
 *  Copyright (C) 2010-2015 by Naoki Saito
 *             Nagoya Municipal Industrial Research Institute, JAPAN
 *  Copyright (C) 2010 by Meika Sugimoto
 * 
 *  上記著作権者は，以下の (1)〜(4) の条件を満たす場合に限り，本ソフトウェ
 *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改変・
 *  再配布（以下，利用と呼ぶ）することを無償で許諾する．
 *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作権
 *      表示，この利用条件および下記の無保証規定が，そのままの形でソース
 *      コード中に含まれていること．
 *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使用
 *      できる形で再配布する場合には，再配布に伴うドキュメント（利用者マ
 *      ニュアルなど）に，上記の著作権表示，この利用条件および下記の無保
 *      証規定を掲載すること．
 *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使用
 *      できない形で再配布する場合には，次のいずれかの条件を満たすこと．
 *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著作
 *        権表示，この利用条件および下記の無保証規定を掲載すること．
 *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに報
 *        告すること．
 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
 *      からも，上記著作権者およびTOPPERSプロジェクトを免責すること．また，
 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
 *      く請求からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
 * 
 *  本ソフトウェアは，無保証で提供されているものである．上記著作権者およ
 *  びTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的に対す
 *  る適合性も含めて，いかなる保証も行わない．また，本ソフトウェアの利用
 *  により直接的または間接的に生じたいかなる損害に関しても，その責任を負
 *  わない．
 * 
 */

#include "kernel_impl.h"
#include "task.h"

/*
 *  トレースログマクロのデフォルト定義
 */

#ifndef LOG_DSP_ENTER
	#define LOG_DSP_ENTER(tskidx)
#endif /* LOG_DSP_ENTER */

#ifndef LOG_DSP_LEAVE
	#define LOG_DSP_LEAVE(tskidx)
#endif /* LOG_DSP_ENTER */


extern const intptr_t	tinib_exinf[];			/* タスクの拡張情報 */
extern const TASK    	tinib_task[];			/* タスクの起動番地 */
extern const uint_t  	tinib_epriority[];		/* タスクの実行時優先度（内部表現） */

/* 内部関数のプロトタイプ宣言 */
Inline bool_t primap_empty(void);
Inline bool_t primap_test(uint_t pri);
Inline uint_t primap_search(void);
Inline void primap_set(uint_t pri);
Inline void primap_clear(uint_t pri);
Inline uint_t bitmap_search(uint_t bitmap);


#ifdef TOPPERS_tskini

/*
 *  実行状態タスクの現在優先度
 */
uint_t runtsk_curpri;

/*
 *  実行状態タスクの起動時優先度
 */
uint_t runtsk_ipri;

/*
 *  レディキューサーチのためのビットマップ
 */
volatile uint_t	ready_primap;

/*
 *  起動要求キューイングのビットマップ
 */
uint_t	actque_bitmap;

/*
 *  タスクディスパッチ起動要求フラグ
 */
bool_t	reqflg;

/*
 *  ディスパッチ禁止状態
 */
bool_t	disdsp;

/*
 *  read_primapの初期値
 */
extern const uint_t init_rdypmap;

#endif /* TOPPERS_tskini */

#ifdef TOPPERS_get_ipriself

/*
 *  タスクIDからの起動時優先度取得(タスクコンテキスト用)
 */
uint_t
get_ipri_self(ID tskid)
{
	uint_t ipri;
	
	if(tskid != TSK_SELF)
	{
		ipri = (uint_t)((tskid) - TMIN_TSKID);
	}
	else
	{
		ipri = runtsk_ipri;
	}
	return ipri;
}

#endif /* TOPPERS_get_ipriself */

/*
 *  タスクIDからの起動時優先度取得(非タスクコンテキスト用)
 */
#ifdef TOPPERS_get_ipri

uint_t
get_ipri(ID tskid)
{
	return (uint_t)(tskid - TMIN_TSKID);
}

#endif /* TOPPERS_get_ipri */

/*
 *  ビットマップサーチ関数
 *
 *  bitmap内の1のビットの内，最も下位（右）のものをサーチし，そのビッ
 *  ト番号を返す．ビット番号は，最下位ビットを0とする．bitmapに0を指定
 *  してはならない．この関数では，bitmapが8ビットであることを仮定し，
 *  uint8_t型としている．
 *
 *  ビットサーチ命令を持つプロセッサでは，ビットサーチ命令を使うように
 *  書き直した方が効率が良い場合がある．このような場合には，ターゲット
 *  依存部でビットサーチ命令を使ったbitmap_searchを定義し，
 *  OMIT_BITMAP_SEARCHをマクロ定義すればよい．また，ビットサーチ命令の
 *  サーチ方向が逆などの理由で優先度とビットとの対応を変更したい場合に
 *  は，PRIMAP_BITをマクロ定義すればよい．
 *
 *  また，標準ライブラリにffsがあるなら，次のように定義して標準ライブ
 *  ラリを使った方が効率が良い可能性もある．
 *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
 */
#ifndef PRIMAP_BIT
#define	PRIMAP_BIT(pri)		(1U << (pri))
#endif /* PRIMAP_BIT */

#ifndef OMIT_BITMAP_SEARCH

static const uint8_t bitmap_search_table[] = { 0U, 1U, 0U, 2U, 0U, 1U, 0U,
												3U, 0U, 1U, 0U, 2U, 0U, 1U, 0U };

Inline uint_t
bitmap_search(uint_t bitmap)
{
	uint_t	n = 0U;

#if TMAX_TPRI != 8
	if ((bitmap & 0x00ffU) == 0U) {
		bitmap >>= 8U;
		n += 8U;
	}
#endif
	
	if ((bitmap & 0x0fU) == 0U) {
		bitmap >>= 4U;
		n += 4U;
	}
	return (n + bitmap_search_table[(bitmap & 0x0fU) - 1U]);
}

#endif /* OMIT_BITMAP_SEARCH */


/*
 *  起動時優先度ビットマップが空かのチェック
 */
Inline bool_t
primap_empty(void)
{
	return (ready_primap == 0U);
}

/*
 *  指定した起動時優先度の起動時優先度ビットマップがセットされているかどうかのチェック
 */
Inline bool_t
primap_test(uint_t pri)
{
	return ((ready_primap & PRIMAP_BIT(pri)) != 0U);
}

/*
 *  起動時優先度ビットマップのサーチ
 */
Inline uint_t
primap_search(void)
{
	return bitmap_search(ready_primap);
}

/*
 *  起動時優先度ビットマップのセット
 */
Inline void
primap_set(uint_t pri)
{
	ready_primap |= PRIMAP_BIT(pri);
}

/*
 *  起動時優先度ビットマップのクリア
 */
Inline void
primap_clear(uint_t pri)
{
	ready_primap &= ~PRIMAP_BIT(pri);
}

/*
 *  最高優先順位タスクのサーチ
 */

#ifdef TOPPERS_tsksched

uint_t
search_schedtsk(void)
{
	return primap_search();
}

#endif /* TOPPERS_tsksched */

#ifdef TOPPERS_tskdmt
/*
 *  指定した起動時優先度のタスクが実行できる状態かどうかのテスト
 *
 */
bool_t
test_dormant(uint_t ipri)
{
	return !primap_test(ipri);
}

#endif /* TOPPERS_tskdmt */

/*
 *  タスク管理モジュールの初期化
 */


#ifdef TOPPERS_tskini

void
initialize_task(void)
{
	/* 起動時優先度ビットマップの初期化 */
	ready_primap = init_rdypmap;
	
	/* タスク優先度の初期化 */
	runtsk_curpri = TSKPRI_NULL;
	runtsk_ipri = TSKPRI_NULL;
	
	/* 起動要求キューイングの初期化 */
	actque_bitmap = 0U;
	
	/* 割込み禁止フラグの初期化 */
	disdsp = false;
}

#endif /* TOPPERS_tskini */

/*
 *  タスクの起動
 */

#ifdef TOPPERS_tskact

bool_t
make_active(uint_t ipri)
{
	bool_t dsp;
	
	primap_set(ipri);
	
	/* 
	 *  実行状態タスクの現在優先度と引数で指定された
	 *  起動対象タスクの初期優先度を比較し，実行状態タスクを
	 *  変更するか判定する．
	 *
	 *  ただし実行状態タスクを変更する場合はディスパッチ禁止状態も参照する．
	 */
	if(ipri < runtsk_curpri) {
		dsp = !disdsp;
	}
	else {
		dsp = false;
	}
	
	return dsp;
}

#endif /* TOPPERS_tskact */


/*
 *  タスクの実行
 */

#ifdef TOPPERS_tskrun

void
run_task(uint_t ipri)
{
	uint_t next_pri;		/* 次に実行開始するタスクの起動時優先度 */
	uint_t saved_ipri;		/* 呼び出し元タスクの初期優先度 */
	uint_t saved_curpri;	/* 呼び出し元タスクの現在優先度 */
	bool_t cont;
	
	/* 最高優先順位タスクを実行する前に，現在実行中のタスクの現在優先度と初期優先度を保存する */
	next_pri = ipri;
	saved_ipri = runtsk_ipri;
	saved_curpri = runtsk_curpri;
	
	do {
		/* 実行するタスクの現在優先度を実行時優先度に設定する */
		runtsk_curpri = tinib_epriority[next_pri];
		runtsk_ipri = next_pri;
		
		/* CPUロック解除 */
		t_unlock_cpu();
		
		/* タスク実行開始 */
		(*((TASK)(tinib_task[next_pri])))(tinib_exinf[next_pri]);
		
		if (t_sense_lock()) {
			/*
			 *  CPUロック状態でext_tskが呼ばれた場合は，CPUロックを解除し
			 *  てからタスクを終了する．実装上は，サービスコール内でのCPU
			 *  ロックを省略すればよいだけ．
			 */
		}
		else {
			/*
			 *  このt_lock_cpuをこの下のdisdspの設定のようにしないのは，
			 *  CPUロック中に再度t_lock_cpuを呼ばないためである．
			 */
			t_lock_cpu();
		}
		
		/* 割込み優先度マスクは全解除状態のはずなので，何もしない */
		
		/*
		 *  ディスパッチ禁止状態でext_tskが呼ばれた場合は，ディスパッ
		 *  チ許可状態にしてからタスクを終了する．
		 *
		 *	本来は以下のように記述すべきであるが，いずれにせよdisdspを
		 *	falseにすればいいため，単にfalseに設定する．
		 *
		 *		if (disdsp) {
		 *			disdsp = false;
		 *		}
		 */
		disdsp = false;
		
		/* ビットマップクリア． */
		primap_clear(next_pri);
		
		cont = false;
		
		/* タスク起動要求キューイングのチェック */
		if (actque_test(next_pri)) {
			actque_clear(next_pri);
			(void) make_active(next_pri);
		}
		
		/* いずれかのタスクが実行可能状態になっているか */
		if(!primap_empty())
		{
			/* 戻り先タスクの現在優先度より高い起動時優先度をもつタスクが起動されたか */
			next_pri = search_schedtsk();
			if(saved_curpri > next_pri)
			{
				cont = true;
			}
		}
	} while(cont);
	
	runtsk_curpri = saved_curpri;
	runtsk_ipri = saved_ipri;
}

#endif /* TOPPERS_tskrun */

/*
 *  タスクディスパッチャ
 */

#ifdef TOPPERS_tskdsp

void
dispatcher(void)
{
	do {
		if(!primap_empty()) {
			/* タスクの開始 */
			run_task(search_schedtsk());
		}
		else {
			idle_loop();
		}
	} while(true);
}

#endif /* TOPPERS_tsk_dsp */
```
# 参考資料
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words and/or centences in order.
Este artículo no está completo. Agregaré algunas palabras en orden.
# Qiita Calendar 2024
祝休日・謹賀新年 2025年の目標
https://qiita.com/kaizen_nagoya/items/dfa34827932f99c59bbc

Qiita 1年間をまとめた「振り返りページ」＠2024
https://qiita.com/kaizen_nagoya/items/ed6be239119c99b15828

2024 参加・主催Calendarと投稿記事一覧 Qiita(248)
https://qiita.com/kaizen_nagoya/items/d80b8fbac2496df7827f

主催Calendar2024分析 Qiita(254)
https://qiita.com/kaizen_nagoya/items/15807336d583076f70bc

Calendar 統計
https://qiita.com/kaizen_nagoya/items/e315558dcea8ee3fe43e

LLM 関連 Calendar 2024 
https://qiita.com/kaizen_nagoya/items/c36033cf66862d5496fa

Large Language Model Related Calendar 
https://qiita.com/kaizen_nagoya/items/3beb0bc3fb71e3ae6d66

博士論文 Calendar 2024 を開催します。 
https://qiita.com/kaizen_nagoya/items/51601357efbcaf1057d0

博士論文(0)関連記事一覧
https://qiita.com/kaizen_nagoya/items/8f223a760e607b705e78

# 関連資料
' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e


# 自己記事一覧
Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。

４月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年２月末を目標にしている。

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

仮説（0）一覧（目標100現在40）
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

安全（0）安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

技術士(0)一覧
https://qiita.com/kaizen_nagoya/items/ce4ccf4eb9c5600b89ea

Reserchmap(0) 一覧
https://qiita.com/kaizen_nagoya/items/506c79e562f406c4257e

物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学 
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

coq(0) 一覧
https://qiita.com/kaizen_nagoya/items/d22f9995cf2173bc3b13

統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba

図(0) state, sequence and timing. UML and お絵描き 
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

色(0) 記事100書く切り口 
https://qiita.com/kaizen_nagoya/items/22331c0335ed34326b9b

品質一覧 
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

水の資料集(0)　方針と成果
https://qiita.com/kaizen_nagoya/items/f5dbb30087ea732b52aa

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語（０）一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

音楽　一覧(0) 
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧 
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/faa4ea03d91d901a618a

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ　 ベクタージャパン　
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧　
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

programの本質は計画だ。programは設計だ。
https://qiita.com/kaizen_nagoya/items/c8545a769c246a458c27

登壇直後版 色使い(JIS安全色) Qiita Engineer Festa 2023〜私しか得しないニッチな技術でLT〜 スライド編 0.15
https://qiita.com/kaizen_nagoya/items/f0d3070d839f4f735b2b

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真：社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

統計の嘘。仮説（127）
https://qiita.com/kaizen_nagoya/items/63b48ecf258a3471c51b

自分の言葉だけで論理展開できるのが天才なら、文章の引用だけで論理展開できるのが秀才だ。仮説（136）
https://qiita.com/kaizen_nagoya/items/97cf07b9e24f860624dd

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「何を」よりも「誰を」。１０年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

Qiitaの記事に３段階または５段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

あなたは「勘違いまとめ」から、勘違いだと言っていることが勘違いだといくつ見つけられますか。人間の間違い(human error(125))の種類と対策
https://qiita.com/kaizen_nagoya/items/ae391b77fffb098b8fb4

プログラマの「プログラムが書ける」思い込みは強みだ。３つの理由。仮説（168）統計と確率(17) , OSEK(79)
https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

これからの情報伝達手段の在り方について考えてみよう。炎上と便乗。
https://qiita.com/kaizen_nagoya/items/71a09077ac195214f0db

ISO/IEC JTC1 SC7 Software and System Engineering
https://qiita.com/kaizen_nagoya/items/48b43f0f6976a078d907

アクセシビリティの知見を発信しよう！（再び）
https://qiita.com/kaizen_nagoya/items/03457eb9ee74105ee618

統計論及確率論輪講（再び）
https://qiita.com/kaizen_nagoya/items/590874ccfca988e85ea3

読者の心をグッと惹き寄せる7つの魔法
https://qiita.com/kaizen_nagoya/items/b1b5e89bd5c0a211d862

「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

ソースコードで議論しよう。日本語で議論するの止めましょう（あるプログラミング技術の議論報告）
https://qiita.com/kaizen_nagoya/items/8b9811c80f3338c6c0b0

脳内コンパイラの3つの危険
https://qiita.com/kaizen_nagoya/items/7025cf2d7bd9f276e382

心理学の本を読むよりはコンパイラ書いた方がよくね。仮説（34）
https://qiita.com/kaizen_nagoya/items/fa715732cc148e48880e

NASAを超えるつもりがあれば読んでください。
https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6

データサイエンティストの気づき!「勉強して仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!! 
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

「ぼくの好きな先生」「人がやらないことをやれ」プログラマになるまで。仮説（37）　
https://qiita.com/kaizen_nagoya/items/53e4bded9fe5f724b3c4

なぜ経済学徒を辞め、計算機屋になったか（経済学部入学前・入学後・卒業後対応） 転職(1)  
https://qiita.com/kaizen_nagoya/items/06335a1d24c099733f64    

プログラミング言語教育のXYZ。 仮説（52） 
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

【24卒向け】9ヶ月後に年収１０００万円を目指す。二つの関門と三つの道。
https://qiita.com/kaizen_nagoya/items/fb5bff147193f726ad25

「【25卒向け】Qiita Career Meetup for STUDENT」予習の勧め
https://qiita.com/kaizen_nagoya/items/00eadb8a6e738cb6336f

大学入試不合格でも筆記試験のない大学に入って卒業できる。卒業しなくても博士になれる。
https://qiita.com/kaizen_nagoya/items/74adec99f396d64b5fd5

全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2

小川メソッド　覚え（書きかけ）
https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68

DoCAP（ドゥーキャップ）って何ですか？
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

views 20,000越え自己記事一覧
https://qiita.com/kaizen_nagoya/items/58e8bd6450957cdecd81

Views１万越え、もうすぐ１万記事一覧 最近いいねをいただいた213記事
https://qiita.com/kaizen_nagoya/items/d2b805717a92459ce853

amazon 殿堂入りNo1レビュアになるまで。仮説(102)
https://qiita.com/kaizen_nagoya/items/83259d18921ce75a91f4

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

小川清最終講義、最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.
Este artículo es una impresión personal basada en mi experiencia personal. No tiene nada que ver con la organización o empresa a la que pertenezco actualmente.
### 文書履歴(document history)
ver. 0.01 初稿 　2018年03月13日
ver. 0.03 add URL 20250208
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
### Muchas gracias por leer hasta la última oración.
Por favor, haz clic en el ícono Me gusta 💚 y sígueme para tener una vida feliz.