TimeManagerの共通部分に関する宣言と説明
More...
#include <stdio.h>
#include <sys/types.h>
Go to the source code of this file.
|
int | check_sched_conflict (struct schedule *sched, struct schedule **scheds, size_t len) |
| スケジュールが、スケジュール群の中のスケジュールと重複していないか確認する。 More...
|
|
void | cleanup_schedules (struct schedule **scheds, size_t len) |
| スケジュール構造体群のメモリをそれぞれ解放する。 More...
|
|
int | create_schedule (pid_t pgid, int lock, pid_t terminator, time_t start, unsigned int duration, const char *caption, struct schedule **sched) |
| 引数を元にスケジュール構造体を作成する。 More...
|
|
void | debug_schedule (const char *comment, struct schedule **scheds, size_t len) |
| スケジュール群の内容を、コメントとともにstderrに出力する。 More...
|
|
int | get_env (char *sem_name, char *shm_name) |
| 環境変数を解析する。 More...
|
|
int | find_sched_by_pgid (pid_t pgid, struct schedule **scheds, size_t len, struct schedule **sched) |
| 与えられたスケジュール群から、指定されたpgid値を持つスケジュールを見つける。 More...
|
|
size_t | generate_unoccupied_scheds_from_scheds (struct schedule **scheds, size_t len, struct schedule **unoccupied_scheds, size_t max_len, time_t range_start, unsigned int range_dur, const char *caption) |
| 与えられたスケジュール群の中から、空き時間のスケジュール群を作成する。 More...
|
|
int | load_schedules (const char *shm_path, size_t shm_size, struct schedule **scheds, size_t scheds_len, size_t *loaded_len) |
| 共有メモリからスケジュールを読込、スケジュール構造体を作成する。 More...
|
|
int | save_schedules (const char *path, const size_t size, struct schedule **scheds, size_t len) |
| スケジュール群を決められた書式で共有メモリに書き込む。 More...
|
|
void | sort_schedules (struct schedule **scheds, size_t len) |
| schedule構造体のstart値で昇順ソートする。 More...
|
|
int | string_to_schedule (const char *str, struct schedule **sched) |
| 文字列の内容からスケジュール構造体を作成する。 More...
|
|
TimeManagerの共通部分に関する宣言と説明
- データベース
データベースは、各プロセスグループのスケジュールを1レコードとして記録した もので、共有メモリ上に記録される。
スケジュールは、schedule構造体の内容を文字列で表したもので、
pgid,lock,terminator,start,duration,captionの順に、値をコロン(:)でつなげた書式である。
記録するスケジュール数の上限は、MAX_NUM_SCHEDULES値で指定される。
int check_sched_conflict |
( |
struct schedule * |
sched, |
|
|
struct schedule ** |
scheds, |
|
|
size_t |
len |
|
) |
| |
スケジュールが、スケジュール群の中のスケジュールと重複していないか確認する。
- Parameters
-
[in] | sched | 重複を確認するスケジュール |
[in] | scheds | 確認される側のスケジュール群 |
[in] | len | scheds配列の個数 |
- Returns
- 重複がない場合は0を、重複がある場合は1を返す。
void cleanup_schedules |
( |
struct schedule ** |
scheds, |
|
|
size_t |
len |
|
) |
| |
スケジュール構造体群のメモリをそれぞれ解放する。
- Parameters
-
[in] | scheds | 解放するメモリへのポインタを持つ配列。 |
[in] | len | schedsの配列数。 |
int create_schedule |
( |
pid_t |
pgid, |
|
|
int |
lock, |
|
|
pid_t |
terminator, |
|
|
time_t |
start, |
|
|
unsigned int |
duration, |
|
|
const char * |
caption, |
|
|
struct schedule ** |
sched |
|
) |
| |
引数を元にスケジュール構造体を作成する。
- Attention
- 戻り値のスケジュール構造体は、メモリを動的に確保しているので、 不要時にはメモリの解放をする必要がある。
- Parameters
-
[in] | pgid | 実行するプロセスが属するプロセスグループID |
[in] | lock | ロックの取得状況(0 or 1) |
[in] | terminator | 終了時刻にシグナルを送信するプロセスのID |
[in] | start | 開始時刻 |
[in] | duration | 継続時間(sec) |
[in] | caption | スケジュールの簡単な説明。 |
[out] | sched | 作成したschedule構造体を示すポインタ |
- Precondition
- captionの文字数は、英数時で、MAX_CAPTION_LEN-1 以下である必要がある。
- Returns
- 成功時は0、失敗時には-1を返す。
void debug_schedule |
( |
const char * |
comment, |
|
|
struct schedule ** |
scheds, |
|
|
size_t |
len |
|
) |
| |
スケジュール群の内容を、コメントとともにstderrに出力する。
書式:comment scheds[x] pgid:xxxx start:xxxxxx dur:xxx cap:xxxxx
- Parameters
-
[in] | commnet | コメント |
[in] | scheds | 書き出すスケジュール群。 |
[in] | len | schedsの配列数。 |
int find_sched_by_pgid |
( |
pid_t |
pgid, |
|
|
struct schedule ** |
scheds, |
|
|
size_t |
len, |
|
|
struct schedule ** |
sched |
|
) |
| |
与えられたスケジュール群から、指定されたpgid値を持つスケジュールを見つける。
- Attention
- 同じpgid値を持つスケジュールが複数ある場合の動作は考慮していない。
- Parameters
-
[in] | pgid | 見つけるスケジュールのpgid値 |
[in] | scheds | 対象のスケジュール群 |
[in] | len | schedsの配列数 |
[out] | sched | 見つかったスケジュール構造体が反映される。 |
- Returns
- 見つかった場合0、見つからない場合-1。
size_t generate_unoccupied_scheds_from_scheds |
( |
struct schedule ** |
scheds, |
|
|
size_t |
len, |
|
|
struct schedule ** |
unoccupied_scheds, |
|
|
size_t |
max_len, |
|
|
time_t |
range_start, |
|
|
unsigned int |
range_dur, |
|
|
const char * |
caption |
|
) |
| |
与えられたスケジュール群の中から、空き時間のスケジュール群を作成する。
- Parameters
-
[in] | scheds | 対象となるスケジュール群 |
[in] | len | schedsの配列数 |
[out] | unoccupied_scheds | 作成した空きスケジュール群を保存する配列。 あらかじめメモリを確保しておく必要がある。 |
[in] | max_len | unoccupied_schedsの配列数。 |
[in] | range_start | 空き時間を検索する開始時刻。 |
[in] | range_dur | 空き時間検索範囲。(sec) |
[in] | caption | 作成した空きスケジュール群のcaption値にセットされる値。 |
- Returns
- 作成した空きスケジュールの数。
int get_env |
( |
char * |
sem_name, |
|
|
char * |
shm_name |
|
) |
| |
環境変数を解析する。
- Parameters
-
[out] | sem_name | セマフォ名。環境変数(データベース番号)が反映される。 |
[out] | shm_name | 共有メモリ名。環境変数(データベース番号)が反映される。 |
- Returns
- 成功時は0、失敗時には-1を返す。
int load_schedules |
( |
const char * |
shm_path, |
|
|
size_t |
shm_size, |
|
|
struct schedule ** |
scheds, |
|
|
size_t |
scheds_len, |
|
|
size_t * |
loaded_len |
|
) |
| |
共有メモリからスケジュールを読込、スケジュール構造体を作成する。
- Parameters
-
[in] | shm_path | 共有メモリのパス。 |
[in] | shm_size | 共有メモリのサイズ。 |
[out] | scheds | 読み込んだスケジュール構造体を保存する配列。 あらかじめメモリを確保しておく必要がある。 |
[in] | scheds_len | schedsの配列数。 |
[out] | loaded_len | 読み込んだスケジュール数が反映される。 |
- Returns
- 成功時は0、失敗時は-1返す。
共有メモリからスケジュールを読込、スケジュール構造体を作成する。
- Parameters
-
[in] | shm_path | 共有メモリのパス。 |
[in] | shm_size | 共有メモリのサイズ。 |
[out] | scheds | 読み込んだスケジュール構造体を保存する配列。あらかじめ メモリを確保しておく必要がある。 |
[in] | scheds_len | schedsの配列数。 |
[out] | loaded_len | 読み込んだスケジュール数が反映される。 |
- Returns
- 成功時は0、失敗時は-1返す。
int save_schedules |
( |
const char * |
path, |
|
|
const size_t |
size, |
|
|
struct schedule ** |
scheds, |
|
|
size_t |
len |
|
) |
| |
スケジュール群を決められた書式で共有メモリに書き込む。
- Parameters
-
[in] | path | 共有メモリのパス。 |
[in] | size | 共有メモリのサイズ。 |
[in] | scheds | 書き込むスケジュール構造体の配列。 |
[in] | len | schedsの配列数。 |
- Returns
- 成功した場合は0を、失敗した場合は-1を返す。
void sort_schedules |
( |
struct schedule ** |
scheds, |
|
|
size_t |
len |
|
) |
| |
schedule構造体のstart値で昇順ソートする。
- Parameters
-
int string_to_schedule |
( |
const char * |
str, |
|
|
struct schedule ** |
sched |
|
) |
| |
文字列の内容からスケジュール構造体を作成する。
- Attention
- 戻り値のスケジュール構造体は、メモリを動的に確保しているので、 不要時にはメモリの解放をする必要がある。
- Parameters
-
[in] | str | スケジュールを表す文字列。 |
[out] | sched | 作成したschedule構造体を示すポインタ。 |
- Returns
- 成功した場合は0を、失敗した場合は-1を返す。