Langsung ke konten

Arsip

System Calls

3 artikel
Linux 22 Sep 2026 4 min read

TFD_TIMER_CANCEL_ON_SET Melaporkan Perubahan Diskontinu Clock Realtime

timerfd yang dipasang terhadap wall clock dapat mengalami perubahan clock diskontinu sebelum deadline tercapai. Dengan TFD_TIMER_CANCEL_ON_SET, Linux mengekspos kejadian itu melalui descriptor: read() berikutnya gagal dengan ECANCELED, bukan menyajikan lompatan clock sebagai expiration timer biasa. Cakupan flag ini sengaja sempit. Efeknya berlaku ketika timerfd_settime() memasang timer absolut pada CLOCK_REALTIME atau CLOCK_REALTIME_ALARM, lalu clock tersebut mengalami perubahan diskontinu. Cancellation terikat pada timer realtime absolut timerfd_create() memilih clock yang menjadi basis timer. Descriptor dengan CLOCK_REALTIME mengikuti system wall clock, sedangkan CLOCK_MONOTONIC mengikuti clock yang tidak disetel melalui perubahan wall clock.

Linux 22 Sep 2026 4 min read

EFD_SEMAPHORE Membuat Read eventfd Mengonsumsi Satu Unit Counter

eventfd normal mengubah seluruh counter yang bernilai nonzero menjadi satu hasil read lalu mereset counter ke nol. Saat dibuat dengan EFD_SEMAPHORE, hanya sisi read yang berubah: setiap read yang berhasil mengembalikan nilai 64-bit 1 dan mengurangi counter yang dikelola kernel sebanyak satu. Perbedaan ini membuat beberapa unit yang dikumpulkan writer tetap dapat dikonsumsi secara terpisah. Objeknya tetap sebuah eventfd, dengan counter, aturan write, lifetime descriptor, dan integrasi readiness yang sama.

Rekayasa Perangkat Lunak 17 Sep 2026 4 min read

renameat2 RENAME_EXCHANGE Menukar Dua Path dalam Satu Operasi Filesystem

renameat2() dengan RENAME_EXCHANGE mengubah dua directory entry yang sudah ada sebagai satu operasi rename atomik. Sebelum pemanggilan, setiap pathname mengarah ke objek asalnya; setelah pemanggilan berhasil, setiap pathname mengarah ke objek yang sebelumnya memakai path satunya. Tidak ada keadaan sukses antara kedua titik itu ketika salah satu nama hanya terhapus atau tertimpa. Sifat ini berbeda dari rename() biasa. Rename konvensional dapat mengganti destination secara atomik, tetapi replacement menghilangkan nama destination dari namespace. Exchange mempertahankan kedua objek bernama dan menukar posisi keduanya.