static ssize_t pport_write(struct file *filp, char *buf, size_t count, loff_t *f_pos)
{
    if(count < MAXSIZE) {
        copy_from_user(d_buf, buf, count);
        d_buf[count] = 0;
        printlcd(d_buf);
        *f_pos += count;
        return count;
        } else {
        copy_from_user(d_buf, buf, MAXSIZE - 1);
        d_buf[MAXSIZE - 1] = 0;
        printlcd(d_buf);
        *f_pos += MAXSIZE - 1;
        return MAXSIZE - 1;
    }
}
Exemple #2
0
void SHOW_LINES()
{
 
 INTERRUPTS_OFF

 

  gotolcd(0);					// Set Cursor Line-1
  strcpy(lcdbuf,LINE_1);
  printlcd();
  gotolcd(0x40);				// Set Cursor Line-2
  strcpy(lcdbuf,LINE_2);
  printlcd();
  
  INTERRUPTS_ON
 	
}
void cleanup_module(void)
{
    printk(KERN_ALERT "pport module is going to terminate\n");
    printlcd("DRIVER REMOVED  ");
     
    unregister_chrdev(major, "registered_pport_61");
    clear();
}
int init_module(void)
{
    int a;
    a = register_chrdev(major, "registered_pport_61", &fops);
    if(a < 0) {
        printk(KERN_ALERT "error: can't register major number %d\n", major);
        return a;
    }
    port = check_region(0x378, 1);
    if(port) printk(KERN_ALERT "pport cannot reserve 0x378\n");
    request_region(0x378, 1, "registered_pport_61");
    //lcd setup//
    outb(0, 0x378);
    udelay(10000);
    lcd_init();
    udelay(10000);
    printlcd("DRIVER INSERTED ");
    return 0;
}