From: Thadeu Lima de Souza Cascardo Date: Wed, 19 May 2010 15:41:13 +0000 (-0400) Subject: Allocate buffer when opening and added release function. X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fkernel%2Fsamples%2Fchar2%2F.git;a=commitdiff_plain;h=d99e8889b3f62defbf49d6a3d407abcc9d2a6d6f Allocate buffer when opening and added release function. --- diff --git a/hellochar.c b/hellochar.c index e49565c..c95100e 100644 --- a/hellochar.c +++ b/hellochar.c @@ -25,10 +25,19 @@ MODULE_LICENSE("GPL"); static dev_t devnum; static struct cdev *dev; +static const char default_greeting[] = "Hello, World!\n"; + +struct hello_buffer { + size_t len; + char buffer[0]; +}; static int hello_open(struct inode *ino, struct file *fp) { - printk(KERN_DEBUG "Hello, World!\n"); + struct hello_buffer *hello = kmalloc(sizeof(*hello) + 4000, GFP_KERNEL); + if (!hello) + return -ENOMEM; + hello->private_data = hello; return 0; } @@ -38,9 +47,16 @@ static ssize_t hello_read(struct file *fp, char __user *buf, size_t sz, return 0; } +static int hello_release(struct inode *ino, struct file *fp) +{ + kfree(fp->private_data); + return 0; +} + static const struct file_operations hello_fops = { .owner = THIS_MODULE, .open = hello_open, + .release = hello_release, .read = hello_read, };