Skip to content
Snippets Groups Projects
Commit 628ffd73 authored by Jean-Christophe PLAGNIOL-VILLARD's avatar Jean-Christophe PLAGNIOL-VILLARD Committed by Wolfgang Denk
Browse files

device: make device_register() clone the device


This is expected by the callers, but this fact was hidden well within
the old list implementation.

Signed-off-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
parent e99e9575
No related branches found
No related tags found
No related merge requests found
...@@ -130,10 +130,32 @@ device_t* device_get_by_name(char* name) ...@@ -130,10 +130,32 @@ device_t* device_get_by_name(char* name)
return NULL; return NULL;
} }
device_t* device_clone(device_t *dev)
{
device_t *_dev;
if(!dev)
return NULL;
_dev = calloc(1, sizeof(device_t));
if(!_dev)
return NULL;
memcpy(_dev, dev, sizeof(device_t));
strncpy(_dev->name, dev->name, 16);
return _dev;
}
int device_register (device_t * dev) int device_register (device_t * dev)
{ {
list_add(&(dev->list), &(devs.list)); device_t *_dev;
_dev = device_clone(dev);
if(!_dev)
return -1;
list_add(&(_dev->list), &(devs.list));
return 0; return 0;
} }
......
...@@ -94,6 +94,7 @@ int devices_init (void); ...@@ -94,6 +94,7 @@ int devices_init (void);
int device_deregister(char *devname); int device_deregister(char *devname);
struct list_head* device_get_list(void); struct list_head* device_get_list(void);
device_t* device_get_by_name(char* name); device_t* device_get_by_name(char* name);
device_t* device_clone(device_t *dev);
#ifdef CONFIG_LCD #ifdef CONFIG_LCD
int drv_lcd_init (void); int drv_lcd_init (void);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment