/* * Driver Load */ static int DIVA_INIT_FUNCTION maint_init(void) { char tmprev[50]; int ret = 0; void *buffer = NULL; do_gettimeofday(&start_time); init_waitqueue_head(&msgwaitq); printk(KERN_INFO "%s\n", DRIVERNAME); printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_MNT); strcpy(tmprev, main_revision); printk("%s Build: %s \n", getrev(tmprev), DIVA_BUILD); if (!divas_maint_register_chrdev()) { ret = -EIO; goto out; } if (!(mntfunc_init(&buffer_length, &buffer, diva_dbg_mem))) { printk(KERN_ERR "%s: failed to connect to DIDD.\n", DRIVERLNAME); divas_maint_unregister_chrdev(); ret = -EIO; goto out; } printk(KERN_INFO "%s: trace buffer = %p - %d kBytes, %s (Major: %d)\n", DRIVERLNAME, buffer, (buffer_length / 1024), (diva_dbg_mem == 0) ? "internal" : "external", major); out: return (ret); }
static int DIVA_INIT_FUNCTION divadidd_init(void) { char tmprev[32]; int ret = 0; printk(KERN_INFO "%s\n", DRIVERNAME); printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_DIDD); strcpy(tmprev, main_revision); printk("%s Build:%s(%s)\n", getrev(tmprev), diva_didd_common_code_build, DIVA_BUILD); if (!create_proc()) { printk(KERN_ERR "%s: could not create proc entry\n", DRIVERLNAME); ret = -EIO; goto out; } if (!diddfunc_init()) { printk(KERN_ERR "%s: failed to connect to DIDD.\n", DRIVERLNAME); #ifdef MODULE remove_proc(); #endif ret = -EIO; goto out; } out: return (ret); }
static int divadidd_proc_show(struct seq_file *m, void *v) { char tmprev[32]; strcpy(tmprev, main_revision); seq_printf(m, "%s\n", DRIVERNAME); seq_printf(m, "name : %s\n", DRIVERLNAME); seq_printf(m, "release : %s\n", DRIVERRELEASE_DIDD); seq_printf(m, "build : %s(%s)\n", diva_didd_common_code_build, DIVA_BUILD); seq_printf(m, "revision : %s\n", getrev(tmprev)); return 0; }
/* * module init */ static int DIVA_INIT_FUNCTION divacapi_init(void) { char tmprev[32]; int ret = 0; sprintf(DRIVERRELEASE_CAPI, "%d.%d%s", DRRELMAJOR, DRRELMINOR, DRRELEXTRA); printk(KERN_INFO "%s\n", DRIVERNAME); printk(KERN_INFO "%s: Rel:%s Rev:", DRIVERLNAME, DRIVERRELEASE_CAPI); strcpy(tmprev, main_revision); printk("%s Build: %s(%s)\n", getrev(tmprev), diva_capi_common_code_build, DIVA_BUILD); if (!(init_capifunc())) { printk(KERN_ERR "%s: failed init capi_driver.\n", DRIVERLNAME); ret = -EIO; } return ret; }
static int proc_read(char *page, char **start, off_t off, int count, int *eof, void *data) { int len = 0; char tmprev[32]; strcpy(tmprev, main_revision); len += sprintf(page + len, "%s\n", DRIVERNAME); len += sprintf(page + len, "name : %s\n", DRIVERLNAME); len += sprintf(page + len, "release : %s\n", DRIVERRELEASE_DIDD); len += sprintf(page + len, "build : %s(%s)\n", diva_didd_common_code_build, DIVA_BUILD); len += sprintf(page + len, "revision : %s\n", getrev(tmprev)); if (off + count >= len) *eof = 1; if (len < off) return 0; *start = page + off; return ((count < len - off) ? count : len - off); }