HPET API - 日本語版
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* HPET API [#be6692a3]
[[HPET API English page>HPET API]]
このページは HPET driver が提供する API をまとめたページ...
- "SYNOPSIS" 定数あるいは望ましい引数で示している箇所が有...
- "PRECONDITION" 関数を呼び出す前に満たす必要がある条件を...
- "RETURN VALUE" and "ERROR" HPET ドライバ固有の仕様だけ...
- "KERNEL CONFIGURATION and PARAMETER" API の機能に影響す...
- "KERNEL SOURCE" 関係する kernel のソース・コード位置を...
** 機能一覧 [#w04c2733]
HPET ドライバには次の機能が備わっています。
- [[HPET timer を確保する>#td026212]]。
- [[timer の機能・状態を調べる>#pdce19e5]]。
- [[割り込み周波数を設定する>#bd9cfaa7]]。
- ハードウエアで実装された周期割り込みを [[有効化>#m7832c...
- timer 割り込みを [[有効化>#ma83f3b9]]/[[無効化>#rcb4bb6...
- poll()/select() で待っているプロセス・スレッドに対して...
- シグナルを送ります。fcntl() 機能を使います。[[F_SETOWN>...
- [[割り込み回数を読み出し・クリアします>#x52e9d21]]。
- [[HPET レジスタをメモリ・アドレス空間にマップします>#g6...
より詳細な情報は [[HPET 仕様書>https://www.intel.com/cont...
** サンプルプログラム [#nd179a17]
HPET ドライバ &ogfileone(/drivers/char/hpet.c); API の仕...
** Device path [#cc1eca9f]
多くの Linux ディストリビューション では HPET ドライバを...
** device を開く [#cc1eca9f]
HPET を使うには /dev/hpet を O_RDONLY モードで開きます。...
** Header files [#g51b6a6f]
user space (Linux アプリケーション) から HPET device を使...
#pre(soft){{
&span(ConsoleOut){#define _GNU_SOURCE};
&span(ConsoleOut){#include <features.h>};
&span(ConsoleOut){#include <sys/types.h>};
&span(ConsoleOut){#include <sys/stat.h>};
&span(ConsoleOut){#include <sys/ioctl.h>};
&span(ConsoleOut){#include <unistd.h>};
&span(ConsoleOut){#include <fcntl.h>};
&span(ConsoleOut){#include <linux/hpet.h>};
}}
poll() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <poll.h>};
}}
select() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <sys/time.h>};
&span(ConsoleOut){#include <sys/select.h>};
}}
signal() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <signal.h>};
}}
mmap() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <sys/mman.h>};
}}
システム・コール エラーを使うには次のヘッダファイルを取り...
#pre(soft){{
&span(ConsoleOut){#include <string.h>}; /* strerror() */
&span(ConsoleOut){#include <errno.h>}; /* errno, Exxx ma...
}}
** HPET ドライバの ioctl API [#ycda765a]
ここでは HPET ドライバの ioctl() API を示します。HPET ド...
|ioctl 要求番号|説明|h
|HPET_INFO|timer の情報を取得します&br;int ioctl(int fd, ...
|HPET_IRQFREQ|割り込み周波数(Hz)を設定します&br;int ioctl...
|HPET_EPI|ハードウエアによる周期割り込み機能を使うように...
|HPET_DPI|ハードウエアによる周期割り込み機能を使わないよ...
|HPET_IE_ON|timer からの割り込みを許可します&br;int ioctl...
|HPET_IE_OFF|timer からの割り込みを禁止します&br;int ioct...
このページでは HPET ドライバ固有の仕様を示します。ioctl()...
*** HPET_INFO - timer の情報を取得します [#pdce19e5]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct hpet_info {};
&span(ConsoleOut){ unsigned long hi_ireqfreq; /* Period ...
&span(ConsoleOut){ unsigned long hi_flags; /* Informa...
&span(ConsoleOut){ unsigned short hi_hpet; /* HPET de...
&span(ConsoleOut){ unsigned short hi_timer; /* Timer n...
&span(ConsoleOut){};};
&span(ConsoleOut){int ioctl(int fd, HPET_INFO, /* out */ ...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer の情報...
|メンバ|説明|h
|hi_ireqfreq|周波数(Hz)で表した割り込み周期|
|hi_flags|timer の機能。 次の値のいずれかになります。&br;...
|hi_hpet|プラットホーム上で番号づけられた HPET デバイス番...
|hi_timer|HPET デバイス(回路ブロック) 中の timer 番号です...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタの値が正しくない。
-- ''EFAULT:'' info が指しているメモリにアクセスできない。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_INFO,HPET_INFO,hpet.c);
*** HPET_IRQFREQ - 割り込み周波数(Hz)を設定します [#bd9cf...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IRQFREQ, unsigne...
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer に割り...
- ''RETURN''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EACCESS'' プロセスに &ogdefs(CAP_SYS_RESOURCE); ケー...
-- ''EINVAL:'' 周波数を 0 にしようとしました。
- ''FILES''&br;
-- /proc/sys/dev/hpet/max-user-freq
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IRQFREQ,HPET_IRQFREQ,hpet.c);, &ogdefs(hpet_...
*** HPET_EPI - ハードウエアによる周期割り込み機能を使うよ...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_EPI);};
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer のハー...
- ''RETURN VALUE''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''ENXIO:'' ファイル・ディスクリプタ fd に割り当てられ...
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_EPI,HPET_EPI,hpet.c);
*** HPET_DPI - ハードウエアによる周期割り込み機能を使わな...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_DPI);};
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer のハー...
- ''RETURN VALUE''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''ENXIO:'' ファイル・ディスクリプタ fd に割り当てられ...
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_DPI,HPET_DPI,hpet.c);, &ogdefs(hpet_interrup...
*** HPET_IE_ON - timer からの割り込みを許可します [#ma83...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IE_ON);};
}}
- ''PRECONDITION''&br;
-- 割り込み周期を ioctl HPET_IRQFREQ リクエストで設定して...
-- ハードウエアによる周期割り込み機能を使うか (HPET_EPI)...
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer の割り...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' 失敗
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''EIO:'' 次のうちいずれかの状態です。
--- 割り込み周波数が無効です。
--- 割り込み周波数が設定されていません。
--- 割り込みハンドラを登録要求できません。チップセットか ...
-- ''EBUSY:''
--- 割り込みは既に許可状態です。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IE_ON,HPET_IE_ON,hpet.c);, &ogdefs(hpet_inte...
*** HPET_IE_OFF - timer からの割り込みを禁止します [#rcb4...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IE_OFF);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer からの...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IE_OFF,HPET_IE_OFF,hpet.c);
** HPET と関係する ファイル・システム と メモリ・マップ A...
この節では HPET ドライバに関係するファイル・システムとメ...
*** open - HPET timer を開く [#td026212]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int open(const char *hpet_path, /* open...
}}
- ''DESCRIPTION''&br;
未使用の HPET timer を開きます。殆どの Linux ディストリビ...
- ''RETURN VALUE''
-- ''return_value >= 0:'' HPET timer が割り当てられたファ...
-- ''-1:'' エラー
- ''ERROR (HPET デバイス固有)''
-- ''EINVAL:'' オープン・モードに書き込みモードが含まれて...
-- ''EBUSY:'' 未使用の HPET timer がない。すなわち、すべ...
- ''FILES''
-- /dev/hpet
- ''KERNEL SOURCE''
-- &ogdefs(hpet_open());
*** close - HPET timer を閉じる [#q45d3eac]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int close(int fd);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer をクロ...
-- timer からの割り込みを止めます。
-- ハードウエアによる周期割り込み機能を使わない設定にしま...
-- IRQ ハンドラを開放します。
- ''KERNEL SOURCE''
-- &ogdefs(hpet_release());
*** read - 割り込み回数を読みだしクリアする [#x52e9d21]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int read(int fd, unsigned long *buf, /*...
}}
- ''DESCRIPTION''&br;
割り込み回数を読みだしてクリアします。割り込み回数は *buf...
-- O_NONBLOCK モードで HPET timer をオープンした場合は re...
--- timer の割り込みが前回の read() から、今の read() ま...
--- timer の割り込みが前回の read() から、今の read() ま...
-- O_NONBLOCK モード無しで HPET timer をオープンした場合...
--- timer の割り込みが前回の read() から、今の read() ま...
--- timer の割り込みが前回の read() から、今の read() ま...
- ''RETURN VALUE''
-- ''sizeof(unsigned long):'' 成功
-- ''-1:'' エラー
- ''ERROR (HPET デバイス固有)''
-- ''EIO:'' 割り込み周波数が設定されていません。
-- ''EFAULT:'' buf で指したアドレス空間はアクセスできませ...
-- ''EINVAL:'' size の値が sizeof(unsigned long) より小さ...
-- ''EAGAIN:'' 前回の read() システム・コールから割り込み...
-- ''EINTR:'' シグナルを受けました。
- ''KERNEL SOURCE''&br;
&ogdefs(hpet_read());
*** mmap - HPET レジスタをメモリ・アドレス空間にマップす...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){void *mmap(void *addr, size_t length, i...
&span(ConsoleOut){int munmap(void *addr, size_t length);};
}}
- ''DESCRIPTION''&br;
mmap() と munmap() でファイル・ディスクリプタ fd に割り付...
length に指定できる値の範囲は [ 0x1 .. page size (equal t...
offset は 0 にして下さい。
- ''RETURN VALUE ''
-- ''return_value != MAP_FAILED:'' 関数が返したポインタは...
-- ''MAP_FAILED:'' HPET レジスタをマップ出来ません。
- ''ERROR (HPET デバイス固有)''
-- ''EACCESS:'' mmap() に対応していません。kernel が CONF...
-- ''ENOSYS:''
--- kernel に HPET レジスタを mmap() でメモリ・アドレス空...
--- HPET のハードウエア実装に起因する問題があります。HPET...
- ''KERNEL CONFIGURATION and PARAMETER''&br;
HPET レジスタを mmap() 出来るようにするには次の条件を満た...
-- CONFIG_HPET_MMAP=y を指定して kernel を構築して下さい。
-- CONFIG_HPET_MMAP_DEFAULT=y を指定せずに構築された kern...
- ''SEE ALSO''
-- [[HPET specification>https://www.intel.com/content/dam...
- ''KERNEL SOURCE''&br;
&ogdefs(hpet_mmap());
*** F_GETOWN - ファイル・ディスクリプタのオーナーを取得す...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETOWN);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを取得します。オー...
- ''RETURN VALUE''&br;
-- ''0:'' オーナーはありません。シグナルは送られません。
-- ''return_value > 0:'' プロセス ID 番号です。
-- ''return_value < 0:'' 負のプロセス・グループ ID です。...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETOWN,F_GETOWN,fcntl.c);
*** F_GETOWN_EX - ファイル・ディスクリプタのオーナーを拡...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct f_owner_ex {};
&span(ConsoleOut){ int type; /* F_OWNER_PID, F_OWNER_...
&span(ConsoleOut){ pid_t pid; /* process id, process ...
&span(ConsoleOut){}};
&span(ConsoleOut){int fcntl(int fd, F_GETOWN_EX, /* out *...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを取得します。*owne...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETOWN_EX,F_GETOWN_EX,fcntl.c);
*** F_SETOWN - ファイル・ディスクリプタのオーナーを設定す...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETOWN, int owner);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを設定します。オー...
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETOWN,F_SETOWN,fcntl.c);
*** F_SETOWN_EX - ファイル・ディスクリプタのオーナーを拡...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct f_owner_ex {};
&span(ConsoleOut){ int type; /* F_OWNER_PID, F_OWNER_...
&span(ConsoleOut){ pid_t pid; /* process id, process ...
&span(ConsoleOut){}};
&span(ConsoleOut){int fcntl(int fd, F_GETOWN_EX, /* in */...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に プロセス ID, プロセス・グ...
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETOWN_EX,F_SETOWN_EX,fcntl.c);
*** F_GETFL - ファイル・ステータス・フラグを取得する [#yc...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETFL);};
}}
- ''DESCRIPTION''&br;
この関数はファイル・ディスクリプタ fd の ファイル・ステー...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETFL,F_GETFL,fcntl.c);
*** F_SETFL - ファイル・ステータス・フラグを設定する [#g6...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETFL, int flags);};
}}
- ''DESCRIPTION''&br;
timer からの割り込みでシグナルを送るには、ファイル・ディ...
#code(c){{
{ int flags;
flags = fcntl(fd, F_GETFL);
if (flags < 0) {
/* error handling. */
}
flags |= O_ASYNC;
if (fcntl(fd, F_SETFL, flags) != 0) {
/* error handling. */
}
}
}}
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETFL,F_SETFL,fcntl.c);, &ogdefs(setfl());, #de...
*** F_GETSIG - 送ろうとするシグナル番号を取得する[#zfddc3...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETSIG);};
}}
- ''DESCRIPTION''&br;
timer 割り込み発生時に送るシグナル番号を取得します。
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETSIG,F_GETSIG,fcntl.c);
*** F_SETSIG - 送ろうとするシグナル番号を設定する[#ub0566...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETSIG, int signal)...
}}
- ''DESCRIPTION''&br;
timer 割り込み発生時に送るシグナル番号を設定します。
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETSIG,F_SETSIG,fcntl.c);, &ogdefs(send_sigio());
終了行:
* HPET API [#be6692a3]
[[HPET API English page>HPET API]]
このページは HPET driver が提供する API をまとめたページ...
- "SYNOPSIS" 定数あるいは望ましい引数で示している箇所が有...
- "PRECONDITION" 関数を呼び出す前に満たす必要がある条件を...
- "RETURN VALUE" and "ERROR" HPET ドライバ固有の仕様だけ...
- "KERNEL CONFIGURATION and PARAMETER" API の機能に影響す...
- "KERNEL SOURCE" 関係する kernel のソース・コード位置を...
** 機能一覧 [#w04c2733]
HPET ドライバには次の機能が備わっています。
- [[HPET timer を確保する>#td026212]]。
- [[timer の機能・状態を調べる>#pdce19e5]]。
- [[割り込み周波数を設定する>#bd9cfaa7]]。
- ハードウエアで実装された周期割り込みを [[有効化>#m7832c...
- timer 割り込みを [[有効化>#ma83f3b9]]/[[無効化>#rcb4bb6...
- poll()/select() で待っているプロセス・スレッドに対して...
- シグナルを送ります。fcntl() 機能を使います。[[F_SETOWN>...
- [[割り込み回数を読み出し・クリアします>#x52e9d21]]。
- [[HPET レジスタをメモリ・アドレス空間にマップします>#g6...
より詳細な情報は [[HPET 仕様書>https://www.intel.com/cont...
** サンプルプログラム [#nd179a17]
HPET ドライバ &ogfileone(/drivers/char/hpet.c); API の仕...
** Device path [#cc1eca9f]
多くの Linux ディストリビューション では HPET ドライバを...
** device を開く [#cc1eca9f]
HPET を使うには /dev/hpet を O_RDONLY モードで開きます。...
** Header files [#g51b6a6f]
user space (Linux アプリケーション) から HPET device を使...
#pre(soft){{
&span(ConsoleOut){#define _GNU_SOURCE};
&span(ConsoleOut){#include <features.h>};
&span(ConsoleOut){#include <sys/types.h>};
&span(ConsoleOut){#include <sys/stat.h>};
&span(ConsoleOut){#include <sys/ioctl.h>};
&span(ConsoleOut){#include <unistd.h>};
&span(ConsoleOut){#include <fcntl.h>};
&span(ConsoleOut){#include <linux/hpet.h>};
}}
poll() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <poll.h>};
}}
select() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <sys/time.h>};
&span(ConsoleOut){#include <sys/select.h>};
}}
signal() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <signal.h>};
}}
mmap() を使うには次のヘッダファイルを取り込んで下さい。
#pre(soft){{
&span(ConsoleOut){#include <sys/mman.h>};
}}
システム・コール エラーを使うには次のヘッダファイルを取り...
#pre(soft){{
&span(ConsoleOut){#include <string.h>}; /* strerror() */
&span(ConsoleOut){#include <errno.h>}; /* errno, Exxx ma...
}}
** HPET ドライバの ioctl API [#ycda765a]
ここでは HPET ドライバの ioctl() API を示します。HPET ド...
|ioctl 要求番号|説明|h
|HPET_INFO|timer の情報を取得します&br;int ioctl(int fd, ...
|HPET_IRQFREQ|割り込み周波数(Hz)を設定します&br;int ioctl...
|HPET_EPI|ハードウエアによる周期割り込み機能を使うように...
|HPET_DPI|ハードウエアによる周期割り込み機能を使わないよ...
|HPET_IE_ON|timer からの割り込みを許可します&br;int ioctl...
|HPET_IE_OFF|timer からの割り込みを禁止します&br;int ioct...
このページでは HPET ドライバ固有の仕様を示します。ioctl()...
*** HPET_INFO - timer の情報を取得します [#pdce19e5]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct hpet_info {};
&span(ConsoleOut){ unsigned long hi_ireqfreq; /* Period ...
&span(ConsoleOut){ unsigned long hi_flags; /* Informa...
&span(ConsoleOut){ unsigned short hi_hpet; /* HPET de...
&span(ConsoleOut){ unsigned short hi_timer; /* Timer n...
&span(ConsoleOut){};};
&span(ConsoleOut){int ioctl(int fd, HPET_INFO, /* out */ ...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer の情報...
|メンバ|説明|h
|hi_ireqfreq|周波数(Hz)で表した割り込み周期|
|hi_flags|timer の機能。 次の値のいずれかになります。&br;...
|hi_hpet|プラットホーム上で番号づけられた HPET デバイス番...
|hi_timer|HPET デバイス(回路ブロック) 中の timer 番号です...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタの値が正しくない。
-- ''EFAULT:'' info が指しているメモリにアクセスできない。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_INFO,HPET_INFO,hpet.c);
*** HPET_IRQFREQ - 割り込み周波数(Hz)を設定します [#bd9cf...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IRQFREQ, unsigne...
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer に割り...
- ''RETURN''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EACCESS'' プロセスに &ogdefs(CAP_SYS_RESOURCE); ケー...
-- ''EINVAL:'' 周波数を 0 にしようとしました。
- ''FILES''&br;
-- /proc/sys/dev/hpet/max-user-freq
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IRQFREQ,HPET_IRQFREQ,hpet.c);, &ogdefs(hpet_...
*** HPET_EPI - ハードウエアによる周期割り込み機能を使うよ...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_EPI);};
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer のハー...
- ''RETURN VALUE''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''ENXIO:'' ファイル・ディスクリプタ fd に割り当てられ...
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_EPI,HPET_EPI,hpet.c);
*** HPET_DPI - ハードウエアによる周期割り込み機能を使わな...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_DPI);};
}}
- ''PRECONDITION''&br;
-- timer 割り込みを禁止して下さい。HPET_IE_OFF を使います。
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer のハー...
- ''RETURN VALUE''&br;
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''ENXIO:'' ファイル・ディスクリプタ fd に割り当てられ...
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_DPI,HPET_DPI,hpet.c);, &ogdefs(hpet_interrup...
*** HPET_IE_ON - timer からの割り込みを許可します [#ma83...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IE_ON);};
}}
- ''PRECONDITION''&br;
-- 割り込み周期を ioctl HPET_IRQFREQ リクエストで設定して...
-- ハードウエアによる周期割り込み機能を使うか (HPET_EPI)...
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer の割り...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' 失敗
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
-- ''EIO:'' 次のうちいずれかの状態です。
--- 割り込み周波数が無効です。
--- 割り込み周波数が設定されていません。
--- 割り込みハンドラを登録要求できません。チップセットか ...
-- ''EBUSY:''
--- 割り込みは既に許可状態です。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IE_ON,HPET_IE_ON,hpet.c);, &ogdefs(hpet_inte...
*** HPET_IE_OFF - timer からの割り込みを禁止します [#rcb4...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int ioctl(int fd, HPET_IE_OFF);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer からの...
- ''RETURN VALUE''
-- ''0:'' 成功
-- ''-1:'' エラー
- ''ERRORS''
-- ''EBADF:'' ファイル・ディスクリプタ fd が無効です。
- ''KERNEL SOURCE''&br;
&ogrefs(HPET_IE_OFF,HPET_IE_OFF,hpet.c);
** HPET と関係する ファイル・システム と メモリ・マップ A...
この節では HPET ドライバに関係するファイル・システムとメ...
*** open - HPET timer を開く [#td026212]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int open(const char *hpet_path, /* open...
}}
- ''DESCRIPTION''&br;
未使用の HPET timer を開きます。殆どの Linux ディストリビ...
- ''RETURN VALUE''
-- ''return_value >= 0:'' HPET timer が割り当てられたファ...
-- ''-1:'' エラー
- ''ERROR (HPET デバイス固有)''
-- ''EINVAL:'' オープン・モードに書き込みモードが含まれて...
-- ''EBUSY:'' 未使用の HPET timer がない。すなわち、すべ...
- ''FILES''
-- /dev/hpet
- ''KERNEL SOURCE''
-- &ogdefs(hpet_open());
*** close - HPET timer を閉じる [#q45d3eac]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int close(int fd);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に割り当てられた timer をクロ...
-- timer からの割り込みを止めます。
-- ハードウエアによる周期割り込み機能を使わない設定にしま...
-- IRQ ハンドラを開放します。
- ''KERNEL SOURCE''
-- &ogdefs(hpet_release());
*** read - 割り込み回数を読みだしクリアする [#x52e9d21]
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int read(int fd, unsigned long *buf, /*...
}}
- ''DESCRIPTION''&br;
割り込み回数を読みだしてクリアします。割り込み回数は *buf...
-- O_NONBLOCK モードで HPET timer をオープンした場合は re...
--- timer の割り込みが前回の read() から、今の read() ま...
--- timer の割り込みが前回の read() から、今の read() ま...
-- O_NONBLOCK モード無しで HPET timer をオープンした場合...
--- timer の割り込みが前回の read() から、今の read() ま...
--- timer の割り込みが前回の read() から、今の read() ま...
- ''RETURN VALUE''
-- ''sizeof(unsigned long):'' 成功
-- ''-1:'' エラー
- ''ERROR (HPET デバイス固有)''
-- ''EIO:'' 割り込み周波数が設定されていません。
-- ''EFAULT:'' buf で指したアドレス空間はアクセスできませ...
-- ''EINVAL:'' size の値が sizeof(unsigned long) より小さ...
-- ''EAGAIN:'' 前回の read() システム・コールから割り込み...
-- ''EINTR:'' シグナルを受けました。
- ''KERNEL SOURCE''&br;
&ogdefs(hpet_read());
*** mmap - HPET レジスタをメモリ・アドレス空間にマップす...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){void *mmap(void *addr, size_t length, i...
&span(ConsoleOut){int munmap(void *addr, size_t length);};
}}
- ''DESCRIPTION''&br;
mmap() と munmap() でファイル・ディスクリプタ fd に割り付...
length に指定できる値の範囲は [ 0x1 .. page size (equal t...
offset は 0 にして下さい。
- ''RETURN VALUE ''
-- ''return_value != MAP_FAILED:'' 関数が返したポインタは...
-- ''MAP_FAILED:'' HPET レジスタをマップ出来ません。
- ''ERROR (HPET デバイス固有)''
-- ''EACCESS:'' mmap() に対応していません。kernel が CONF...
-- ''ENOSYS:''
--- kernel に HPET レジスタを mmap() でメモリ・アドレス空...
--- HPET のハードウエア実装に起因する問題があります。HPET...
- ''KERNEL CONFIGURATION and PARAMETER''&br;
HPET レジスタを mmap() 出来るようにするには次の条件を満た...
-- CONFIG_HPET_MMAP=y を指定して kernel を構築して下さい。
-- CONFIG_HPET_MMAP_DEFAULT=y を指定せずに構築された kern...
- ''SEE ALSO''
-- [[HPET specification>https://www.intel.com/content/dam...
- ''KERNEL SOURCE''&br;
&ogdefs(hpet_mmap());
*** F_GETOWN - ファイル・ディスクリプタのオーナーを取得す...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETOWN);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを取得します。オー...
- ''RETURN VALUE''&br;
-- ''0:'' オーナーはありません。シグナルは送られません。
-- ''return_value > 0:'' プロセス ID 番号です。
-- ''return_value < 0:'' 負のプロセス・グループ ID です。...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETOWN,F_GETOWN,fcntl.c);
*** F_GETOWN_EX - ファイル・ディスクリプタのオーナーを拡...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct f_owner_ex {};
&span(ConsoleOut){ int type; /* F_OWNER_PID, F_OWNER_...
&span(ConsoleOut){ pid_t pid; /* process id, process ...
&span(ConsoleOut){}};
&span(ConsoleOut){int fcntl(int fd, F_GETOWN_EX, /* out *...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを取得します。*owne...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETOWN_EX,F_GETOWN_EX,fcntl.c);
*** F_SETOWN - ファイル・ディスクリプタのオーナーを設定す...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETOWN, int owner);};
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd のオーナーを設定します。オー...
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETOWN,F_SETOWN,fcntl.c);
*** F_SETOWN_EX - ファイル・ディスクリプタのオーナーを拡...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){struct f_owner_ex {};
&span(ConsoleOut){ int type; /* F_OWNER_PID, F_OWNER_...
&span(ConsoleOut){ pid_t pid; /* process id, process ...
&span(ConsoleOut){}};
&span(ConsoleOut){int fcntl(int fd, F_GETOWN_EX, /* in */...
}}
- ''DESCRIPTION''&br;
ファイル・ディスクリプタ fd に プロセス ID, プロセス・グ...
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETOWN_EX,F_SETOWN_EX,fcntl.c);
*** F_GETFL - ファイル・ステータス・フラグを取得する [#yc...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETFL);};
}}
- ''DESCRIPTION''&br;
この関数はファイル・ディスクリプタ fd の ファイル・ステー...
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETFL,F_GETFL,fcntl.c);
*** F_SETFL - ファイル・ステータス・フラグを設定する [#g6...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETFL, int flags);};
}}
- ''DESCRIPTION''&br;
timer からの割り込みでシグナルを送るには、ファイル・ディ...
#code(c){{
{ int flags;
flags = fcntl(fd, F_GETFL);
if (flags < 0) {
/* error handling. */
}
flags |= O_ASYNC;
if (fcntl(fd, F_SETFL, flags) != 0) {
/* error handling. */
}
}
}}
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETFL,F_SETFL,fcntl.c);, &ogdefs(setfl());, #de...
*** F_GETSIG - 送ろうとするシグナル番号を取得する[#zfddc3...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_GETSIG);};
}}
- ''DESCRIPTION''&br;
timer 割り込み発生時に送るシグナル番号を取得します。
- ''KERNEL SOURCE''&br;
&ogrefs(F_GETSIG,F_GETSIG,fcntl.c);
*** F_SETSIG - 送ろうとするシグナル番号を設定する[#ub0566...
- ''SYNOPSIS''
#pre(soft){{
&span(ConsoleOut){int fcntl(int fd, F_SETSIG, int signal)...
}}
- ''DESCRIPTION''&br;
timer 割り込み発生時に送るシグナル番号を設定します。
- ''KERNEL SOURCE''&br;
&ogrefs(F_SETSIG,F_SETSIG,fcntl.c);, &ogdefs(send_sigio());
ページ名: