system-calls

新しいLinuxでシステムコールの呼び出し規則が変更されたのはなぜですか?
system-calls

新しいLinuxでシステムコールの呼び出し規則が変更されたのはなぜですか?

から引用https://www.kernel.org/doc/Documentation/process/adding-syscalls.rst: 少なくとも64ビットx86では、v4.17からカーネルからシステムコールを呼び出さないことが困難な要件になります。システム呼び出しに別の呼び出し規則を使用し、システムstruct pt_regs 呼び出しラッパーから直ちにデコードしてから、処理を実際のシステム呼び出し関数に渡します。これは、6つのCPUレジスタを常に任意のユーザー空間コンテンツで埋めるのではなく(呼び出しチェーンに深刻な問題を引き起こす可能性が...

Admin

mmap()はすべてのページエラーの後にページテーブルを更新しますか?
system-calls

mmap()はすべてのページエラーの後にページテーブルを更新しますか?

mmap()の研究では、mmapはページエラーのために仮想メモリアドレスに達した場合にのみ要求ページングを使用してデータをカーネルページキャッシュにコピーすることを知っています。 ページキャッシュより大きいファイルを読み取る場合は、ページキャッシュの一部の古いページをリサイクルのために置き換える必要があります。だから私の質問は、ページテーブルが更新され、その仮想メモリアドレスがキャッシュ内の古い古いページ(新しいデータが含まれている)アドレスにマッピングされるのですか?どうやってこれが起こったのですか?これはmmap()システムコールの一部ですか? ...

Admin

getdents() システムコールがコンテナ内で別の結果を返すようです。
system-calls

getdents() システムコールがコンテナ内で別の結果を返すようです。

ファイル形式を読み取ろうとしています/dev/null。使用するとstat()文字デバイスと正確に報告されます。 を使用すると、getdents()文字デバイスと報告されます。コンテナで実行しない限り、通常のファイルと表示されます。 コンテナで実行すると、なぜ他の結果が出るのですか? この画像を使用してdockerとpodmanの最新バージョンでテストした結果は同じでしたubuntu:22.04。 コピーするコードは次のとおりです。このコードはstat()常に機能しますが、getdentsコンテナ内で実行するとアサーションが失敗します。また、注目すべき点は、...

Admin

カーネルでユーザー空間スレッドを「目覚めさせる」方法は何ですか?
system-calls

カーネルでユーザー空間スレッドを「目覚めさせる」方法は何ですか?

データを受け取るカーネルデバイスドライバと、データを待つユーザ空間スレッドがあるとします。 ユーザー空間スレッドをブロックし、カーネルドライバがデータを処理し、適切なバッファに入れた後に目を覚ますようにして、サイクルの無駄を避けたいと思います。 これを行う適切な方法は何ですか?信号の使用に関する複雑なアイデアについて読んだ。 ...

Admin

Linuxシステムコール:sendfileと比較してcopy_file_rangeの利点は何ですか?
system-calls

Linuxシステムコール:sendfileと比較してcopy_file_rangeの利点は何ですか?

私が理解したのは、Linuxカーネルは伝統的に新しいシステムコールを追加するのに保守的でした。 しかし、存在を調べてみるとcopy_file_range同じことをするようですsendfile。私が見つけることができる唯一の違いは次のとおりです。 ソケットではまったく機能せず、正しい汎用ファイルでのみ機能します。 入出力オフセット設定可能 しかし、通常のファイルの場合、aはseek同じオフセットセマンティクスを実装する可能性があるため、copy_file_rangeシステムコールの機能が既存のシステムコールの厳密なサブセットである場合、システムコールの目的...

Admin

1 GBよりはるかに小さいサイズ(64 MBなど)に対するSHM_HUGE_1GBの使用の影響
system-calls

1 GBよりはるかに小さいサイズ(64 MBなど)に対するSHM_HUGE_1GBの使用の影響

私は、Linuxで共有メモリを実際に使用する(そして理解していない)ことに比較的慣れていません。私は現在、共有64MBメモリの連続ブロックを割り当てる必要がある状況に取り組んでいます。共有メモリを正しく使用する方法を学んでいる間、私は偶然にいくつかの巨大なTLBオプションを見つけましたshmget。SHM_HUGE_2MBSHM_HUGE_1GBhttps://man7.org/linux/man-pages/man2/shmget.2.html)。 今、私は巨大なTLBが大規模な連続メモリに非常に有益であることを知っています(仮想アドレスから物理アドレスへ...

Admin

同期システムコールと中断のない省電力モード
system-calls

同期システムコールと中断のない省電力モード

私のアプリケーションは中断することなくスリープモードになります。プロセスが中断されましたlinkat。 ❯ sudo cat /proc/1308028/syscall 265 0xffffffffffffff9c 0x7fbd9f32a120 0xffffffffffffff9c 0x7fbd9f395930 0x400 0x7fbd9f3c1c70 0x7ffff745b7c0 0x7fbda231b1fd ❯ sudo cat /proc/1308028/stack [<0>] cv_wait_common+0xaa/0x130 [spl...

Admin

stat(2) 書き込み後の読み取りは write(2) と一致しますか?
system-calls

stat(2) 書き込み後の読み取りは write(2) と一致しますか?

man 2 write状態: POSIX では、write() 戻り後に発生する read(2) が新しいデータを返すことを証明できなければなりません。すべてのファイルシステムがPOSIXと互換性があるわけではありません。 stat(2)Linuxでは、これはfstat(2)特にメンバーにも適用されますかstat.st_size? 具体的には、statまたはfstatを使用してファイルを開き、そのファイルに948427バイトを書き込むと、948427バイトがO_CREAT表示されますか? (もしそうなら、これはPOSIXファイルシステムの保証ですか、それ...

Admin

EINTRを引き起こす信号はどこから来ますか?
system-calls

EINTRを引き起こす信号はどこから来ますか?

私はこれがいわゆるEINTR割り込み可能なシステムコールによって返される可能性があるエラーであることを知っています。私の質問は、EINTRを引き起こす信号がどこから来るのかということです。 Pythonで作業するときは、この問題に直面しますfnctl。ctrl+などの割り込みコマンドを実行していませんc。 ...

Admin

Arch Linuxにはman syscallsはありません
system-calls

Arch Linuxにはman syscallsはありません

私はそれを見つけることができません。インストールしましたが、linux-docsまだsudo pacman -S linux-docs機能man syscallsしません。 ...

Admin

奇妙なEACCES(権限返却)権限エラーのデバッグ
system-calls

奇妙なEACCES(権限返却)権限エラーのデバッグ

acプログラムでは読み取れませんが、誰でも読むことができるファイルへのシンボリックリンクがあります。設定を自動的にインポートredshiftする$HOME/.config/redshift/redsihft.conf必要がありますが、そうではありません。どのファイルが試行されているかを確認するために、システムコールを追跡してみました。 debian-x1-7th][redshift-1.12][130]$ strace -fe trace=file redshift execve("/usr/bin/redshift", ["redshi...

Admin

マニュアルページ、システムコール、libc
system-calls

マニュアルページ、システムコール、libc

epoll_createライブラリ関数(マンページ、セクション3)としてリストされていないが、acceptライブラリ関数としてリストされているのはなぜですか?どちらの機能もカーネルシステムコールによって提供され、libcどちらもカーネルシステムコールを参照しますが? 私は「なぜ」という質問が一般的に人気がないのかを知っていますが、これはこれらの概念とセクション2および/または3に何かを追加する標準との間、そしてlibcの関係方法間の関係をよりよく理解するための私の要求です。そして、システムコール(すべてのlibcはCプログラム用のインタフェースをカーネル自体...

Admin

理由:エラー: 'sys_close'関数の暗黙的な宣言?
system-calls

理由:エラー: 'sys_close'関数の暗黙的な宣言?

Debian 12に最新のNVIDIAドライバをインストールしようとしています。プロセスの一部にはいくつかのカーネルモジュールが含まれています。ほとんどはエラーなしでコンパイルされますが、最後に失敗します(それが意味するのは約96%)。ログにはこのエラーが複数回表示されます。その内容は次のとおりですnv-caps.c。 CC [M] /tmp/selfgz170986/NVIDIA-Linux-x86_64-525.125.06/kernel/nvidia/nv-caps.o /tmp/selfgz170986/NVIDIA-Linux-x...

Admin

アセンブリの端末システムコール
system-calls

アセンブリの端末システムコール

私はLinux用のチェスエンジンを作成したいと思います。 C/C++ またはその他の高度な言語は、外部ライブラリなしで純粋な X64 アセンブリ言語で書かれています。フルスクリーンテキスト/コンソール/ターミナルモードで実行されます。グラフィカルユーザーインターフェースはありません。 Unicode文字を使用してフラグメントを表示します。 WindowsコンソールAPIで実装する方法を知っています。端末に直接アクセスし、フォントをUnicode対応フォントに変更することに関するLinuxカーネルシステムコールは何ですか?私は明らかにそれを調べましたが、主に3...

Admin

Linux:システムコールを実行すると、ユーザーゾーンスレッドの優先順位が高くなりますか?
system-calls

Linux:システムコールを実行すると、ユーザーゾーンスレッドの優先順位が高くなりますか?

私が理解したところ、Linuxにはカーネルプリエンプション機能があります。つまり、システムコールを実行するスレッドを先取りし、次のエポックで実行するようにスケジュールを調整できます。 これにより、スケジュールを再キャッチするときにシステムコールのスレッドに優先順位が高くなるかどうか疑問に思います。 たとえば、SCHED_OTHERがあり、優先度が20のユーザーモードプロセスがあるとします(0は最低、139は最も高い)。このプロセスは、標準の読み取りシステム呼び出しを使用してsysfsからi2c eepromファイルを読み取ります。 eepromを読み取るとき...

Admin