システムコールのソースコード

システムコールのソースコード

Cライブラリは、Cプログラムでシステムコールを実行するために使用できるwrite()、read()、open()、およびその他の関数を提供します。これらの関数のソースコードはどこにありますか?

答え1

これはカーネルによって実装されるシステムコールです。とで見つけることができますread。以下のようにバージョンを呼び出すことはすべてです。writefs/read_write.creadwriteksysksys_readksys_write

SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
{
    return ksys_read(fd, buf, count);
}
ssize_t ksys_read(unsigned int fd, char __user *buf, size_t count)
{
    struct fd f = fdget_pos(fd);
    // ...
}

fs/read_write.c

答え2

最近のlwn記事には、カーネル側のシステムコールの詳細な詳細な説明があります。http://lwn.net/Articles/604287/

答え3

標準Cライブラリのソースコードが必要な場合は、@goldilocksが提供するリンクを確認してください。

Linuxシステムコールのソースコードを知りたい場合は、Linuxのソースコードを検索する必要があります。システムコールは、Linuxソースコードの複数の場所で定義されています。 grepを使用して文字列マクロを見つけることができますSYSCALL_DEFINE

grep -r -n SYSCALL_DEFINE /path/to/linux_source

それらのいくつかはあなたが見ることができますここ

答え4

GNUのlibcの後、他のlibc実装のソースコードを見ることができます。

無実ナビゲーション用のオンラインソースコードがあります。ほとんどのシステムコールここにあります。

誰かを置いた。Libcをgithubに移植します。 しかし、これは非公式と見なされます。

関連情報