static ssize_t cdata_write(struct file *filp, const char *buf, size_t size, loff_t *off) { unsigned int i; unsigned int index; unsigned char *pixel; struct cdata_t *cdata = filp->private_data; pixel = cdata->buf; index = cdata->index; for(i = 0; i < size; i++){ if(index >= BUF_SIZE){ cdata->index = index; flush_lcd((void *)cdata); index = cdata->index; } copy_from_user(&pixel[index], &buf[i], 1); index++; printk(KERN_INFO "(Ivan Lee)%s: index = %d\n", __func__, index); } printk(KERN_INFO "(Ivan Lee)CDATA: Write!!\n"); return size; }
static int cdata_close(struct inode *inode, struct file *filp) { struct cdata_t *cdata = (struct cdata *)filp->private_data; flush_lcd((void *)cdata); del_timer(&cdata->flush_timer); kfree(cdata->buf); kfree(cdata); return 0; }
static int cdata_close(struct inode *inode, struct file *filp) { struct cdata_t* cdata = (struct cdata_t *)filp->private_data; printk(KERN_INFO "CDATA: cdata_close() is invoked.\n"); flush_lcd((unsigned long)cdata); del_timer(&cdata->flush_timer); kfree(cdata->buf); kfree(cdata); return 0; }