(1)ファイルやデバイスを開く
int open(char* name, int option)
name : ファイルまたはデバイス名
option : 0(デバイス),OptWrite(ファイル書込),OptRead(ファイル読込),OptAppend(ファイル追加)
戻り値 : 識別子、ただし、-1はエラー
(2)ファイルやデバイスを閉じる
int close(int fd)
fd : 識別子
戻り値 : -1はエラー
(3)ファイルやデバイスからデータを読み込む
int read(int fd, char* data, int size)
fd : 識別子
data : データ領域のアドレス
size : 読み込み可能な最大バイト数
戻り値 : 読み込んだバイト数、ただし、-1はエラー
(4)ファイルやデバイスへデータを書き込む
int write(int fd, char* data, int size)
fd : 識別子
data : データ領域のアドレス
size : 書き込みたいバイト数
戻り値 : 書き込んだバイト数、ただし、-1はエラー
(5)デバイスへの制御
int ioctl(int fd, int data, int op)
fd : 識別子
data : データ
op : 指令
戻り値 : -1はエラー
動作はデバイスに依存する
(6)デバイスのシーク
int seek(int fd, int position)
fd : 識別子
position: オフセット
戻り値 : -1はエラー
(7)自分のタスクIDを取得
int get_pid()
戻り値 : 自分のタスクID
(8)割込みを許可する
void int_enable()
(9)割込みを禁止する
void int_disable()
ARM7で原則として扱えないが、割込みハンドラのみ扱える。
(10)ファイル一覧取得のための識別子の取得
int SetDirent(char* name, DirEnt* ent)
name : 対象となるパス
ent : ファイル情報構造体のポインタ
戻り値 : 識別子、ただし、-1はエラー
ファイル一覧の取得が終わったら、必ず、closeで閉じること
(11)ファイル一覧を順次取得
int NextRecord(int fd, DirEnt* ent)
fd : 識別子
ent : ファイル情報構造体のポインタ
戻り値 : 次の一覧がある場合は0、ない場合は9以外
ent.name : ファイル名
ent.size : ファイルサイズ
ent.attr : ファイルの属性
(12)ファイルの削除
int DeleteFile(char* name)
name : 消去したいファイル名
戻り値 : -1はエラー
(13)割込みハンドラのセット
int set_handler(int num, void (*func)())
num : 割込みベクタ番号
func : 割込みハンドラの関数
戻り値 : -1はエラー
割込みハンドラは以下のような割込み指定を行わなければならない。
#pragma interrupt
また、H8において広域変数を使うときは以下のマクロを使う
load_segment(割込みベクタ番号)
H8/SH2では割込みベクタ番号は定数でなければならない。
SH3では割込みベクタ番号のかわりにintevt2コードを定数で指定しなければならない。
(14)プロセスの起動
int exec(int argc, char **argv)
argc : 引数の数
argv : 引数内容を格納した配列のポインタ
戻り値 : タスクID、ただし、-1はエラー
(15)子プロセスの終了を待つ
int wait(int id)
id : 子プロセスのタスクID
戻り値 : -1はエラー
(16)作業フォルダの移動
int cd(char *path)
path : フォルダのパス
戻り値 : -1はエラー
(17)作業フォルダ名の取得
char* cwd()
戻り値 : 作業フォルダのパス
(18)メモリの確保
char* malloc(int size)
size : メモリを確保したい大きさ
戻り値 : 確保した領域のポインタ、ただし、0のときはエラー
(19)メモリの開放
int free(char* ptr)
ptr : 確保した領域のポインタ
戻り値 : -1はエラー
(20)タスクの終了
int exit(int code)
code : リターンコード
戻り値 : -1はエラー
(21)時間待ち
int sleep(int ms)
ms : ミリ秒単位の時間待ち
10ミリ秒以下の精度は保障しない
(22)sockaddr構造体
struct sockaddr {
int sin_addr; /* IP */
int sin_port; /* Port */
};
(23)ネットワークデバイスの起動と設定
int ifconfig(char* name, int ip, int mask)
name : デバイス名
ip : IPアドレス
mask : ネットマスク
戻り値 : ネットワークID、ただし、-1はエラー
NE2000設定例 : ifconfig("ne0", IPADDR(192,168,1,2), IPADDR(255,255,255,0))
無線LAN設定例 : ifconfig("wi0", IPADDR(192,168,1,2), IPADDR(255,255,255,0))
(24)ネットワークデバイスの起動と設定
int ifdown(int net)
net : ネットワークID
戻り値 : -1はエラー
(25)ゲートウェイの設定
int set_gateway(int gw)
gw : ゲートウェイのIPアドレス
戻り値 : -1はエラー
(26)IPの接続確認
int ping(int ip, int size)
ip : 接続確認したいIPアドレス
size : pingパケットの大きさ
戻り値 : -1はエラー
(27)UDPソケットを開く
int udp_socket()
戻り値 : ソケット、ただし、-1はエラー
(28)UDPソケットを閉じる
int udp_free(int socket)
socket : ソケット
戻り値 : -1はエラー
(29)ソケットにアドレスを割り当てる
int udp_bind(int socket, struct sockaddr* bind)
socket : ソケット
bind : 割り当てたいアドレスを格納した構造体のポインタ
戻り値 : -1はエラー
(30)UDPでデータを送信
int sendto(int socket, char* data, int size, struct sockaddr* target)
socket : ソケット
data : データ領域のアドレス
size : データの大きさ
target : 送信対象のアドレスを格納した構造体のポインタ
戻り値 : 送信したデータの大きさ、ただし、-1はエラー
送信元のポート番号はudp_bindで割り当てたポートとなる。
ただし、udp_bindで割り当てない場合は適当なポート番号を割り当てる。
(31)UDPでデータを受信
int recvfrom(int socket, char* data, int size, struct sockaddr* source) {
socket : ソケット
data : データ領域のアドレス
size : データの大きさ
source : 受信したアドレスを格納するための構造体のポインタ
戻り値 : 受信したデータの大きさ、ただし、-1はエラー
udp_bindで割り当てたポート番号とIPアドレスからのデータのみ受信。
ただし、IPアドレスが0の場合はどのIPアドレスからも受信対象とする。
(32)MACアドレスを取得
int getmac(int net, char* mac) {
net : ネットワークID
mac : MACアドレスを格納するためのアドレス
戻り値 : -1はエラー
(33)UDPによるデータ受信の時間切れを設定
int udp_timeout(int socket, int ms) {
socket : ソケット
ms : ミリ秒単位の時間切れ
戻り値 : -1はエラー
(34)TCPソケットを開く
int tcp_socket(0)
引数 : 0
戻り値 : ソケット、ただし、-1はエラー
(35)TCPソケットを閉じる(RST切断)
int tcp_free(int socket)
socket : ソケット
戻り値 : -1はエラー
(36)ソケットにアドレスを割り当てる
int tcp_bind(int socket, struct sockaddr* bind)
socket : ソケット
bind : 割り当てたいアドレスを格納した構造体のポインタ
戻り値 : -1はエラー
(37)TCPサーバに接続する
int tcp_connect(int socket, struct-sockaddr* target)
socket : ソケット
target : 接続したいTCPサーバのアドレスを格納した構造体のポインタ
戻り値 : -1はエラー
(38)TCPサーバを起動し接続要求の準備をする
int tcp_listen(int socket, int max)
socket : ソケット
max : 最大接続数
戻り値 : -1はエラー
(39)TCPクライアントからの接続を受付け新しいソケットを作成
int tcp_accept(int socket, struct-sockaddr* client)
socket : ソケット
client : 接続されたTCPクライアントのアドレスを格納するための構造体のポインタ
戻り値 : -1はエラー
(40)TCPでデータを送信
int tcp_write(int socket, char *data, int size)
socket : ソケット
data : データ領域のアドレス
size : データの大きさ
戻り値 : 送信したデータの大きさ、ただし、-1はエラー
(41)TCPでデータを受信
int tcp_read(int socket char* data int size)
socket : ソケット
data : データ領域のアドレス
size : データの大きさ
戻り値 : 受信したデータの大きさ、ただし、-1はエラー
(42)TCPによるデータ受信の時間切れを設定
int tcp_timeout(int socket, int ms) {
socket : ソケット
ms : ミリ秒単位の時間切れ
戻り値 : -1はエラー
(43)共有メモリのキーに対応する共有メモリ識別子を取得する
int shm_get(int key, int size)
key:共有メモリのキー
size:共有メモリの大きさ
戻り値:共有メモリ識別子、失敗時は-1
(44)共有メモリ識別子に対応したメモリを確保する
char *shm_at(int id)
id:共有メモリ識別子
戻り値:共有メモリのアドレス、失敗時は-1
ただし、すでにメモリが確保されている場合は、共有メモリのアドレスのみを返す
(45)共有メモリ識別子に対応したメモリを破棄する
char *shm_dt(int id)
id:共有メモリ識別子
戻り値:成功時は0、失敗時は-1
他のプロセスに関係なく実行されるので、全てのプロセスが絶対に対象となる共有メモリを使わないことを確認してから、このシステムコールを実行する必要がある
(46)TCPソケットを閉じる(FIN切断)
int tcp_close(int socket)
socket : ソケット
戻り値 : -1はエラー
(47)TCPコネクション状態を得る
int tcp_status(int socket)
socket : ソケット
戻り値 : 0が接続中、-1は切断状態
(48)リターンコードを得る
int ret_value()
(49)文字列のレジストリをセット
int set_regist_string(char* name, char* value)
name : レジトリ名
value : 文字列のレジトリ内容
戻り値 : -1はエラー
レジストリ名は、英数8文字まででなければならない
将来、仕様が変更される可能性があるので使用はおすすめしません
(50)整数値のレジストリをセット
int set_regist_data(char* name, int value)
name : レジトリ名
value : 整数のレジトリ内容
戻り値 : -1はエラー
将来、仕様が変更される可能性があるので使用はおすすめしません
(51)文字列のレジストリをセット
int get_regist_string(char* name, char* value, int maxsize)
name : レジトリ名
value : 文字列レジトリを格納する領域のポインタ
maxsize : 文字列レジトリを格納する領域の最大サイズ
戻り値 : -1はエラー
将来、仕様が変更される可能性があるので使用はおすすめしません
(52)文字列のレジストリを取得
int get_regist_string(char* name, int* value)
name : レジトリ名
value : 整数レジストリを格納する変数のポインタ
戻り値 : -1はエラー
将来、仕様が変更される可能性があるので使用はおすすめしません
(53)レジストリ一覧を遂次取得する
int list_regist(int index, char* name)
index : レジストリ一覧のインデックス(0から開始)
name : レジストリ名を格納する領域のポインタ
戻り値 : 1はindexで指定したレジストリが存在、0は指定したレジストリが存在しない、-1はこれ以上大きなindexは存在しない
将来、仕様が変更される可能性があるので使用はおすすめしません
(54)USBのコントロール転送を実行する
int usb_setup(int fd, char* desc, char* data)
fd : USBデバイスのディスクプリタ
desc : デバイスへのディスクプリタのポインタ
data : コントロール転送で転送対象のデータ領域のポインタ
戻り値 : 0はコントロール転送が成功、-1はコントロール転送が失敗
(55)バルク転送でOUTパケットを送信する
int usb_write(int fd, char* data, int size, int ep)
fd : USBデバイスのディスクプリタ
data : OUTパケットデータが格納されている領域のポインタ
size : OUTパケットデータのサイズ
ep : エンドポイントの番号
戻り値 : 0はバルク転送が成功、-1はバルク転送が失敗
(56)バルク転送でINパケットを送信する
int usb_read(int fd, char* data, int size, int ep)
fd : USBデバイスのディスクプリタ
data : INパケットデータが格納するための領域のポインタ
size : INパケットデータを読み込む領域の最大サイズ
ep : エンドポイントの番号
戻り値 : 0はバルク転送が成功、-1はバルク転送が失敗