コード例 #1
0
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;
}
コード例 #2
0
ファイル: cdata.c プロジェクト: rtnk29/ldd-training
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;
}
コード例 #3
0
ファイル: cdata-2.6.c プロジェクト: rickhau/ldd-training
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;
}