Kernel Space dan User Space

First Pitfall bagi programmer yang biasa memrogram aplikasi desktop kemudian memulai belajar menulis driver adalah: percobaan untuk mengirim data ke hardware. Banyak pertanyaan di milis mengenai compilation error ketika mencoba membangun kode “menyalakan dan mematikan LED yang terhubung ke GPIO” yang berujung pada salah pengertian antara aplikasi “biasa” dan device driver.

Sistem Operasi pada umumnya memisahkan memory virtual menjadi dua bagian yaitu kernel space dan user space. Kernel space adalah memory region yang diperuntukkan bagi kernel dan drivers, sedangkan user space adalah memory yang boleh digunakan oleh seluruh aplikasi yang berjalan di mode user.

Referensi yang saya gunakan ada di sini (kernel space) dan di sini (user space).

Lalu pertanyaan muncul, bagaimana cara mengirim parameter dari user ke kernel? Pada pembahasan sebelumnya tentang IOCTL, kita kenali potongan kode sebagai berikut:

if (copy_from_user(&temp, (unsigned long *)ioctl_param,
                                                   sizeof(temp))) {
        return -EFAULT;
}

jawaban pertanyaan di atas adalah: copy_from_user() untuk menerima parameter dari user, dan copy_to_user() untuk mengirim parameter ke user. Keduanya didefinisikan di <asm/uaccess.h>.

Pos ini dipublikasikan di Linux dan tag , , , , , . Tandai permalink.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s