Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 454 → Rev 455

/shark/trunk/drivers/linuxc26/linuxcomp.c
38,8 → 38,15
_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */
_L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */
__kernel_size_t strnlen(const char *s, __kernel_size_t count)
{
const char *sc;
for (sc = s; count-- && *sc != '\0'; ++sc)
/* nothing */;
return sc - s;
}
 
 
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
 
struct resource ioport_resource = {
246,146 → 253,9
return err;
}
 
void device_initialize(struct device *dev)
{
kobject_init(&dev->kobj);
INIT_LIST_HEAD(&dev->node);
INIT_LIST_HEAD(&dev->children);
INIT_LIST_HEAD(&dev->driver_list);
INIT_LIST_HEAD(&dev->bus_list);
}
 
int device_add(struct device *dev)
{
struct device * parent;
int error;
 
dev = get_device(dev);
if (!dev || !strlen(dev->bus_id))
return -EINVAL;
 
parent = get_device(dev->parent);
 
pr_debug("DEV: registering device: ID = '%s'\n", dev->bus_id);
 
/* first, register with generic layer. */
kobject_set_name(&dev->kobj,dev->bus_id);
if (parent)
dev->kobj.parent = &parent->kobj;
 
if ((error = kobject_add(&dev->kobj)))
goto Error;
if (parent)
list_add_tail(&dev->node,&parent->children);
 
Done:
put_device(dev);
return error;
Error:
if (parent)
put_device(parent);
goto Done;
}
 
void device_del(struct device * dev)
{
struct device * parent = dev->parent;
 
if (parent)
list_del_init(&dev->node);
 
kobject_del(&dev->kobj);
if (parent)
put_device(parent);
}
 
#define to_drv(obj) container_of(obj,struct device_driver,kobj)
 
struct device_driver * get_driver(struct device_driver * drv)
{
return drv ? to_drv(kobject_get(&drv->kobj)) : NULL;
}
 
void put_driver(struct device_driver * drv)
{
kobject_put(&drv->kobj);
}
 
void driver_unregister(struct device_driver * drv)
{
}
 
int driver_register(struct device_driver * drv)
{
INIT_LIST_HEAD(&drv->devices);
return 0;
}
 
#define to_dev(obj) container_of(obj,struct device,kobj)
 
struct device * get_device(struct device * dev)
{
return dev ? to_dev(kobject_get(&dev->kobj)) : NULL;
}
 
void put_device(struct device * dev)
{
kobject_put(&dev->kobj);
}
 
int device_register(struct device *dev)
{
return device_add(dev);
}
 
void device_unregister(struct device * dev)
{
pr_debug("DEV: Unregistering device. ID = '%s'\n", dev->bus_id);
device_del(dev);
put_device(dev);
}
 
int bus_register(struct bus_type * bus)
{
return 0;
}
 
int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot)
{ return 0; }
 
unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
{
unsigned long result = 0,value;
 
if (!base) {
base = 10;
if (*cp == '0') {
base = 8;
cp++;
if ((*cp == 'x') && isxdigit(cp[1])) {
cp++;
base = 16;
}
}
}
while (isxdigit(*cp) &&
(value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
result = result*base + value;
cp++;
}
if (endp)
*endp = (char *)cp;
return result;
}
 
 
long simple_strtol(const char *cp,char **endp,unsigned int base)
{
if(*cp=='-')
return -simple_strtoul(cp+1,endp,base);
return simple_strtoul(cp,endp,base);
}
 
void dump_stack(void) { }
 
void panic(const char * fmt, ...) {