X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/11efb0a892b088eb448635058b2547ecc6f121fd..fdc4d3610737d153a387bdb67792a323806efad3:/lincan/src/proc.c diff --git a/lincan/src/proc.c b/lincan/src/proc.c index a851830..4fb2343 100644 --- a/lincan/src/proc.c +++ b/lincan/src/proc.c @@ -5,7 +5,7 @@ * email:pisa@cmp.felk.cvut.cz * This software is released under the GPL-License. * Version lincan-0.3 17 Jun 2004 - */ + */ #include "../include/can.h" #include "../include/can_sysdep.h" @@ -54,14 +54,14 @@ static struct proc_dir_entry * can_create_proc_entry(const char *name, mode_t mo struct proc_dir_entry *new_entry = NULL; char *namestore; int namelen; - + if(!name || !parent) return NULL; namelen=strlen(name); if(!namelen) return NULL; - new_entry = (struct proc_dir_entry *) + new_entry = (struct proc_dir_entry *) can_checked_malloc(sizeof(struct proc_dir_entry)+namelen+1); if (new_entry == NULL) @@ -100,7 +100,7 @@ static int can_remove_proc_entry(struct proc_dir_entry *del, struct proc_dir_ent static int can_proc_readlink(struct proc_dir_entry *ent, char *page) { char *link_dest = (char*)ent->data; - + strcpy(page, link_dest); return strlen(link_dest); } @@ -112,8 +112,8 @@ static inline struct proc_dir_entry *can_proc_symlink(const char *name, struct proc_dir_entry *parent, const char *dest) { struct proc_dir_entry *entry; - - + + entry = can_create_proc_entry(name, S_IFLNK | S_IRUGO | S_IWUGO | S_IXUGO, parent); if (entry == NULL) return NULL; @@ -155,7 +155,7 @@ int can_init_procdir(void) { int board; struct candevice_t *candev; - base->can_proc_entry = can_create_proc_entry("can", S_IFDIR | S_IRUGO | + base->can_proc_entry = can_create_proc_entry("can", S_IFDIR | S_IRUGO | S_IXUGO, CAN_PROC_ROOT); if (base->can_proc_entry == NULL) return -ENODEV; @@ -163,7 +163,7 @@ int can_init_procdir(void) for (board=0; boardnr_boards; board++) { candev=hardware_p->candevice[board]; if(candev) add_channel_to_procdir(candev); - } + } return 0; } @@ -180,7 +180,7 @@ int can_delete_procdir(void) return 0; } -static int can_chip_procinfo(char *buf, char **start, off_t offset, +static int can_chip_procinfo(char *buf, char **start, off_t offset, int count, int *eof, void *data) { struct canchip_t *chip=data; @@ -222,7 +222,7 @@ int add_channel_to_procdir(struct candevice_t *candev) return -ENOMEM; sprintf(base->channel[cc]->ch_name, "channel%d",cc); - + base->channel[cc]->ch_entry = can_create_proc_entry( base->channel[cc]->ch_name, S_IFDIR | S_IRUGO |S_IXUGO, @@ -240,29 +240,29 @@ int add_channel_to_procdir(struct candevice_t *candev) candev->chip[i]); cc++; - } + } return 0; } int remove_channel_from_procdir(void) { - + while (cc != 0) { cc--; - + if(!base->channel[cc]) continue; remove_proc_entry("chip_info", base->channel[cc]->ch_entry); - + if (remove_object_from_procdir(cc)) - return -ENODEV; - + return -ENODEV; + /* name: base->channel[cc]->ch_name */ if (can_remove_proc_entry(base->channel[cc]->ch_entry, base->can_proc_entry)) return -ENODEV; - + can_checked_free(base->channel[cc]); base->channel[cc] = NULL; } @@ -286,7 +286,7 @@ int add_object_to_procdir(int chip_nr) sprintf(base->channel[chip_nr]->object[i]->obj_name,"object%d",i); sprintf(base->channel[chip_nr]->object[i]->lnk_name,"dev"); - + base->channel[chip_nr]->object[i]->obj_entry = can_create_proc_entry( base->channel[chip_nr]->object[i]->obj_name, S_IFDIR | S_IRUGO | S_IXUGO, @@ -306,7 +306,7 @@ int add_object_to_procdir(int chip_nr) } return 0; -} +} int remove_object_from_procdir(int chip_nr) { @@ -316,10 +316,10 @@ int remove_object_from_procdir(int chip_nr) for (i=0; ichannel[chip_nr]->object[i]) continue; - + /* name: base->channel[chip_nr]->object[i]->lnk_name */ if (can_remove_proc_entry( base->channel[chip_nr]->object[i]->lnk, - base->channel[chip_nr]->object[i]->obj_entry)) + base->channel[chip_nr]->object[i]->obj_entry)) return -ENODEV; /* name: base->channel[chip_nr]->object[i]->obj_name */ if (can_remove_proc_entry(