From d99e8889b3f62defbf49d6a3d407abcc9d2a6d6f Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Wed, 19 May 2010 11:41:13 -0400 Subject: [PATCH] Allocate buffer when opening and added release function. --- hellochar.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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, }; -- 2.20.1