Hi semua…
Apa kabar nih ??? lama ga nulis – nulis, skarang mau nulis sesuatu tentang linux device driver (masih ??? hehehee). Yupz, ini masih lanjutan dari device driver sebelumnya….Kalau tulisan sebelumnya merupakan template dari sebuah device driver sederhana, kali ini kita coba membaca informasi yang di berikan pada sisi user space, dan menuliskan kembali informasi hasil proses device driver ke user space.
Command yang bisa dipakai untuk read dan write ke user space adalah: copy_from_user() dan copy_to_user() atau bisa juga menggunakan get_user() atau put_user()
Definisi dari fungsi copy_to_user() dan copy_from_user() tersebut adalah sebagai berikut:
unsigned long copy_to_user(void __user *to, const void *from,unsigned long count);
unsigned long copy_from_user(void *to, const void __user *from, unsigned long count);
Sedangkan untuk put_user() dan get_user() adalah sebagai berikut:
int put_user(datum,ptr);
int get_user(local,ptr);
Nah penasaran gimana cara pakai nya ??
Oke, pertama – tama buat dulu kerangka device drivernya, gampangnya..liat aja tulisan sebelumnya linux kernel module, kemudian pada bagian dibawah ini, edit code-nya jadi seperti ini:
static int device_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
unsigned long arg)
{
int retval = SUCCESS;
unsigned int val = 0;
printk(KERN_INFO “Device ioctl\n”);
switch (cmd) {
case IOCTL_XXX:
printk(KERN_INFO “Copy Dari User Space\n”);
/* copy data dari user space */
if (copy_from_user(&val, (unsigned long*)arg, sizeof(val))) {
retval = -EFAULT;
}
printk(KERN_INFO “data dari user: %d\n”, val);
break;
case IOCTL_YYY:
printk(KERN_INFO “Copy Ke User Space\n”);
val++;
/* copy data (val) ke user space */
if (copy_to_user((int *)arg, &val, sizeof(val))) {
retval = -EFAULT;
}
printk(KERN_INFO “data ke user: %d\n”, val);
break;
default:
printk(KERN_INFO “IOCTL default\n”);
break;
}
return retval;
}
Hahaaa….seperti itu fren….cara copy dari dan ke user space dari device driver ![]()
simple n mudah kan ??? silahkan mencoba untuk membuktikannya hehehe….
Oiya, saran dan kritiknya tolong disampaikan
salam kenal bos…
kalau sudah bos buat, gimana cara saya melihatnya, apakah saya harus mengunjungi blog bos atau kirim ke alamat email saya??? terima kasih banyak sebelumnya.
Kalau buat kirim dan terima pesan dengan menggunakan C++ gimana bos? bisa bantu gw
ada server dan clientnya, dari client mengirim pesan dan server menerima pesan tersebut, terus dari server bisa ngirim pesan balik (istilahnya two way communication) sekalian sama penjelasannya ya bos. maaf merepotkan
pake c++ ??
coba deh liat link ini: http://www.codeproject.com/KB/cpp/chat_client_server.aspx