picox
0.1
|
picoxライブラリのコンパイル時コンフィギュレーション [詳解]
マクロ定義 | |
#define | X_BYTE_ORDER_BIG (1) |
#define | X_BYTE_ORDER_LITTLE (0) |
#define | X_BYTE_ORDER_UNKNOWN (2) |
#define | X_CONF_ASSERT(expr) X_DEFAULT_ASSERT(expr) |
X_ASSERT()を置き換えるルーチンを設定します。 | |
#define | X_CONF_BYTE_ORDER X_BYTE_ORDER_UNKNOWN |
CPUのバイトオーダーを指定します。 [詳解] | |
#define | X_CONF_ERR_HEADER "[ERR ]" |
ERRORレベルのログヘッダ文字列を指定します。 | |
#define | X_CONF_FILE_NAME_MAX (32) |
NULL終端を含むファイル名の最大バイト数を指定します [詳解] | |
#define | X_CONF_FILE_PATH_MAX (128) |
NULL終端を含むファイルパスの最大バイト数を指定します [詳解] | |
#define | X_CONF_FREE(ptr) free(ptr) |
メモリ解放関数を設定します。未指定時はfree()が使用されます。 | |
#define | X_CONF_GETTIMEOFDAY_IMPL_TYPE X_GETTIMEOFDAY_IMPL_TYPE_ZERO |
x_port_gettimeofday()の実装方法を設定します [詳解] | |
#define | X_CONF_HAS_C99_MATH (0) |
strtof()等のC99で追加されたfloat版の標準関数を使用します。 | |
#define | X_CONF_INFO_HEADER "[INFO]" |
INFOMATONレベルのログヘッダ文字列を指定します。 | |
#define | X_CONF_LINE_MAX (128) |
1行のNULL終端を含む最大文字数を指定します [詳解] | |
#define | X_CONF_LOG_LEVEL X_LOG_LEVEL_INFO |
ログ出力レベルを設定します。 [詳解] | |
#define | X_CONF_LOG_TIMESTAMP_BUF_SIZE (32) |
タイムスタンプ文字列('\0'含む)の最大値を指定します [詳解] | |
#define | X_CONF_MALLOC(size) malloc(size) |
動的メモリ確保関数を設定します。未指定時はmalloc()が使用されます。 | |
#define | X_CONF_MDELAY_IMPL_TYPE X_MDELAY_IMPL_TYPE_TICKS_BUSYWAIT |
x_port_mdelay()の実装方法を設定します [詳解] | |
#define | X_CONF_MSLEEP_IMPL_TYPE X_MSLEEP_IMPL_TYPE_MDELAY |
x_port_msleep()の実装方法を設定します [詳解] | |
#define | X_CONF_NDEBUG (0) |
アサートによる実行時チェックルーチンをコンパイル時に除去します。 | |
#define | X_CONF_NOTI_HEADER "[NOTI]" |
NOTICEレベルのログヘッダ文字列を指定します。 | |
#define | X_CONF_TICKS_NOW_IMPL_TYPE X_TICKS_NOW_IMPL_TYPE_GETTIMEOFDAY |
x_port_ticks_now()の実装方法を設定します [詳解] | |
#define | X_CONF_TICKS_PER_SEC 1000 |
1秒あたりのチック数を設定します | |
#define | X_CONF_UDELAY_IMPL_TYPE X_UDELAY_IMPL_TYPE_TICKS_BUSYWAIT |
x_port_udelay()の実装方法を設定します [詳解] | |
#define | X_CONF_USE_ANSI_COLOR_LOG (1) |
ログ出力時に、各レベルに応じて色をつけます。 [詳解] | |
#define | X_CONF_USE_ASSERT_ARG (1) |
引数の範囲チェック等の有効化 | |
#define | X_CONF_USE_ASSERT_ENUM (1) |
列挙値チェックの有効化 | |
#define | X_CONF_USE_ASSERT_NULL (1) |
引数のNULLチェックの有効化 | |
#define | X_CONF_USE_ASSERT_SELF (1) |
クラス指向モジュールの第一引数のNULLチェックの有効化 | |
#define | X_CONF_USE_ASSERT_TAG (1) |
タグチェックの有効化 | |
#define | X_CONF_USE_DETECT_MALLOC_NULL (0) |
picoxライブラリで何らかの動的メモリ確保失敗をX_ASSERT()で検出します。 [詳解] | |
#define | X_CONF_USE_DYNAMIC_LOG_SUPPRESS (0) |
ログ出力レベルの実行時変更機能を使用します。 [詳解] | |
#define | X_CONF_USE_FLOATING_POINT_PRINTF (0) |
x_printf系統の関数でfによる浮動小数点出力を使用可能にします。 | |
#define | X_CONF_USE_LOG_TIMESTAMP (0) |
ログ出力に任意のタイムスタンプを付加します。 [詳解] | |
#define | X_CONF_USE_USER_CONFIG (0) |
カスタムコンフィギュレーションを定義したヘッダファイルをincludeする かどうかを指定します [詳解] | |
#define | X_CONF_USLEEP_IMPL_TYPE X_USLEEP_IMPL_TYPE_UDELAY |
x_port_usleep()の実装方法を設定します [詳解] | |
#define | X_CONF_VERB_HEADER "[VERB]" |
VERBOSEレベルのログヘッダ文字列を指定します。 | |
#define | X_CONF_WARN_HEADER "[WARN]" |
WARNINGレベルのログヘッダ文字列を指定します。 | |
#define | X_CONF_XFS_TYPE X_XFS_TYPE_UNION_FS |
標準のファイルシステムタイプを指定します [詳解] | |
#define | X_GETTIMEOFDAY_IMPL_TYPE_POSIX (2) |
#define | X_GETTIMEOFDAY_IMPL_TYPE_USERPORT (1) |
#define | X_GETTIMEOFDAY_IMPL_TYPE_ZERO (0) |
#define | X_MDELAY_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define | X_MDELAY_IMPL_TYPE_TICKS_BUSYWAIT (0) |
#define | X_MDELAY_IMPL_TYPE_USERPORT (1) |
#define | X_MSLEEP_IMPL_TYPE_MDELAY (0) |
#define | X_MSLEEP_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define | X_MSLEEP_IMPL_TYPE_USERPORT (1) |
#define | X_TICKS_NOW_IMPL_TYPE_GETTIMEOFDAY (0) |
#define | X_TICKS_NOW_IMPL_TYPE_USERPORT (1) |
#define | X_UDELAY_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define | X_UDELAY_IMPL_TYPE_TICKS_BUSYWAIT (0) |
#define | X_UDELAY_IMPL_TYPE_USERPORT (1) |
#define | X_USLEEP_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define | X_USLEEP_IMPL_TYPE_UDELAY (0) |
#define | X_USLEEP_IMPL_TYPE_USERPORT (1) |
#define | X_xFS_TYPE_SINGLE_FS (1) |
#define | X_XFS_TYPE_UNION_FS (0) |
picoxライブラリのコンパイル時コンフィギュレーション
#define X_CONF_BYTE_ORDER X_BYTE_ORDER_UNKNOWN |
CPUのバイトオーダーを指定します。
以下の値が指定可能です。CPUのバイトオーダーを指定していると、一部関数の実行 効率が上がります。
#define X_CONF_FILE_NAME_MAX (32) |
NULL終端を含むファイル名の最大バイト数を指定します
X_CONF_FILE_PATH_MAXと同様に、スタックサイズに注意してください。
#define X_CONF_FILE_PATH_MAX (128) |
NULL終端を含むファイルパスの最大バイト数を指定します
filesystemモジュールの関数内では、X_CONF_FILE_PATH_MAXバイトの ローカル変数を多数使用するため、メモリ制約の厳しい組込みシステムではスタック サイズに注意する必要があります。
ファイル関数を使用する場合は、最低でもX_CONF_FILE_PATH_MAX * 3バイト程度のス タックを用意しておく確保しておいてください。
マルチスレッド環境ではファイル関数を呼び出すスレッドを限定しておくとメモリの 節約となります。
#define X_CONF_GETTIMEOFDAY_IMPL_TYPE X_GETTIMEOFDAY_IMPL_TYPE_ZERO |
x_port_gettimeofday()の実装方法を設定します
設定可能な値は以下の通りです
#define X_CONF_LINE_MAX (128) |
1行のNULL終端を含む最大文字数を指定します
char[X_CONF_LINE_MAX]がスタックに確保される場合を考慮して適切な値を指定して ください
#define X_CONF_LOG_LEVEL X_LOG_LEVEL_INFO |
ログ出力レベルを設定します。
指定可能な値は以下の通りです。
指定優先度未満のログは、X_CONF_USE_DYNAMIC_LOG_SUPPRESSが未定義であれば、コ ンパイル時に除去されます。
#define X_CONF_LOG_TIMESTAMP_BUF_SIZE (32) |
タイムスタンプ文字列('\0'含む)の最大値を指定します
指定なしの場合は、32がデフォルト値となります。x_port_stimestamp()にはここで 指定した値が渡されます。
#define X_CONF_MDELAY_IMPL_TYPE X_MDELAY_IMPL_TYPE_TICKS_BUSYWAIT |
x_port_mdelay()の実装方法を設定します
sleepよりも微小な待ち時間に対して使用することを想定しており、呼び 出し側はsleepよりも精度がよいことを期待します。
設定可能な値は以下の通りです
#define X_CONF_MSLEEP_IMPL_TYPE X_MSLEEP_IMPL_TYPE_MDELAY |
x_port_msleep()の実装方法を設定します
設定可能な値は以下の通りです
#define X_CONF_TICKS_NOW_IMPL_TYPE X_TICKS_NOW_IMPL_TYPE_GETTIMEOFDAY |
x_port_ticks_now()の実装方法を設定します
picox自身はチック割り込みに関与しません。ユーザーが定義したチックの周期を picoxが知るために必要な設定値です。
設定可能な値は以下の通りです
#define X_CONF_UDELAY_IMPL_TYPE X_UDELAY_IMPL_TYPE_TICKS_BUSYWAIT |
x_port_udelay()の実装方法を設定します
x_mdelay()と同じく、x_udelay()よりも精度のよい待ちを期待します
設定可能な値は以下の通りです
#define X_CONF_USE_ANSI_COLOR_LOG (1) |
ログ出力時に、各レベルに応じて色をつけます。
ログ表示端末がANSIカラーシーケンスに対応していない場合は、表示崩れになるので 注意してください。
#define X_CONF_USE_DETECT_MALLOC_NULL (0) |
picoxライブラリで何らかの動的メモリ確保失敗をX_ASSERT()で検出します。
組込みプログラムでは動的メモリ確保に失敗しないように設計することが普通なので まじめにNULLチェックをするより、メモリ不足 == バグ or 設計ミスとして即死させ た方が楽かもしれません。
#define X_CONF_USE_DYNAMIC_LOG_SUPPRESS (0) |
ログ出力レベルの実行時変更機能を使用します。
x_set_log_level()でログレベルを指定し、指定レベル未満のログは、出力されませ ん。
#define X_CONF_USE_LOG_TIMESTAMP (0) |
#define X_CONF_USE_USER_CONFIG (0) |
カスタムコンフィギュレーションを定義したヘッダファイルをincludeする かどうかを指定します
picoxを含む外部ライブラリを使用する時は、管理上あまりファイルを編集したくな いものです。
この設定値が0でない場合は、picox_config.hという設定ファイルをincludeするので 、プレデファインオプションで1に設定し、picox_config.hに変更したい項目だけ定 義すると、picoxのファイルを直接編集することなくカスタマイズが可能です。
#define X_CONF_USLEEP_IMPL_TYPE X_USLEEP_IMPL_TYPE_UDELAY |
x_port_usleep()の実装方法を設定します
設定可能な値は以下の通りです
#define X_CONF_XFS_TYPE X_XFS_TYPE_UNION_FS |
標準のファイルシステムタイプを指定します
アプリケーションの特性に合わせて以下のどちらかを指定してください
xunionfsとxsinglefsは初期化部分と一部の関数以外は共通のインターフェースをも っています。例えばX_XFS_TYPE_UNION_FSを指定すると、xfs_open()は xunionfs_open()ににdefineで置換されます。
xunionfsは複数の仮想ファイルシステムを共通のディレクトリツリーにマウントする 機能を提供しますが、余分な処理が増えるため、コードサイズや実行時間が増大しま す。
xsinglefsは単一の仮想ファイルシステムだけを扱います。xunionfsに比べて低機能 ですが、余分なオーバーヘッドがありません。
#define X_GETTIMEOFDAY_IMPL_TYPE_POSIX (2) |
#define X_GETTIMEOFDAY_IMPL_TYPE_USERPORT (1) |
#define X_GETTIMEOFDAY_IMPL_TYPE_ZERO (0) |
#define X_MDELAY_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define X_MDELAY_IMPL_TYPE_TICKS_BUSYWAIT (0) |
#define X_MDELAY_IMPL_TYPE_USERPORT (1) |
#define X_MSLEEP_IMPL_TYPE_MDELAY (0) |
#define X_MSLEEP_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define X_MSLEEP_IMPL_TYPE_USERPORT (1) |
#define X_TICKS_NOW_IMPL_TYPE_GETTIMEOFDAY (0) |
#define X_TICKS_NOW_IMPL_TYPE_USERPORT (1) |
#define X_UDELAY_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define X_UDELAY_IMPL_TYPE_TICKS_BUSYWAIT (0) |
#define X_UDELAY_IMPL_TYPE_USERPORT (1) |
#define X_USLEEP_IMPL_TYPE_POSIX_NANOSLEEP (2) |
#define X_USLEEP_IMPL_TYPE_UDELAY (0) |
#define X_USLEEP_IMPL_TYPE_USERPORT (1) |