Added a missing return value in port_init().

Cleaned up the code a bit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@588 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2002-08-05 05:25:26 +00:00
parent 7f88f899f4
commit 267cf83fb3
+26 -17
View File
@@ -61,7 +61,9 @@ static int port_spinlock = 0;
#define GRAB_PORT_LOCK(s) acquire_spinlock(&(s).lock) #define GRAB_PORT_LOCK(s) acquire_spinlock(&(s).lock)
#define RELEASE_PORT_LOCK(s) release_spinlock(&(s).lock) #define RELEASE_PORT_LOCK(s) release_spinlock(&(s).lock)
int port_init(kernel_args *ka)
int
port_init(kernel_args *ka)
{ {
int i; int i;
int sz; int sz;
@@ -71,12 +73,12 @@ int port_init(kernel_args *ka)
// create and initialize semaphore table // create and initialize semaphore table
port_region = vm_create_anonymous_region(vm_get_kernel_aspace_id(), "port_table", (void **)&ports, port_region = vm_create_anonymous_region(vm_get_kernel_aspace_id(), "port_table", (void **)&ports,
REGION_ADDR_ANY_ADDRESS, sz, REGION_WIRING_WIRED, LOCK_RW|LOCK_KERNEL); REGION_ADDR_ANY_ADDRESS, sz, REGION_WIRING_WIRED, LOCK_RW|LOCK_KERNEL);
if(port_region < 0) { if (port_region < 0) {
panic("unable to allocate kernel port table!\n"); panic("unable to allocate kernel port table!\n");
} }
memset(ports, 0, sz); memset(ports, 0, sz);
for(i=0; i<MAX_PORTS; i++) for (i = 0; i < MAX_PORTS; i++)
ports[i].id = -1; ports[i].id = -1;
// add debugger commands // add debugger commands
@@ -88,19 +90,22 @@ int port_init(kernel_args *ka)
return 0; return 0;
} }
int dump_port_list(int argc, char **argv)
int
dump_port_list(int argc, char **argv)
{ {
int i; int i;
for(i=0; i<MAX_PORTS; i++) { for (i = 0; i < MAX_PORTS; i++) {
if(ports[i].id >= 0) { if (ports[i].id >= 0)
dprintf("%p\tid: 0x%x\t\tname: '%s'\n", &ports[i], ports[i].id, ports[i].name); dprintf("%p\tid: 0x%x\t\tname: '%s'\n", &ports[i], ports[i].id, ports[i].name);
} }
}
return 0; return 0;
} }
static void _dump_port_info(struct port_entry *port)
static void
_dump_port_info(struct port_entry *port)
{ {
int cnt; int cnt;
dprintf("PORT: %p\n", port); dprintf("PORT: %p\n", port);
@@ -115,20 +120,22 @@ static void _dump_port_info(struct port_entry *port)
dprintf("write_sem: %d\n", cnt); dprintf("write_sem: %d\n", cnt);
} }
static int dump_port_info(int argc, char **argv)
static int
dump_port_info(int argc, char **argv)
{ {
int i; int i;
if(argc < 2) { if (argc < 2) {
dprintf("port: not enough arguments\n"); dprintf("port: not enough arguments\n");
return 0; return 0;
} }
// if the argument looks like a hex number, treat it as such // if the argument looks like a hex number, treat it as such
if(strlen(argv[1]) > 2 && argv[1][0] == '0' && argv[1][1] == 'x') { if (strlen(argv[1]) > 2 && argv[1][0] == '0' && argv[1][1] == 'x') {
unsigned long num = atoul(argv[1]); unsigned long num = atoul(argv[1]);
if(num > KERNEL_BASE && num <= (KERNEL_BASE + (KERNEL_SIZE - 1))) { if (num > KERNEL_BASE && num <= (KERNEL_BASE + (KERNEL_SIZE - 1))) {
// XXX semi-hack // XXX semi-hack
// one can use either address or a port_id, since KERNEL_BASE > MAX_PORTS assumed // one can use either address or a port_id, since KERNEL_BASE > MAX_PORTS assumed
_dump_port_info((struct port_entry *)num); _dump_port_info((struct port_entry *)num);
@@ -145,15 +152,17 @@ static int dump_port_info(int argc, char **argv)
} }
// walk through the ports list, trying to match name // walk through the ports list, trying to match name
for(i=0; i<MAX_PORTS; i++) { for (i = 0; i < MAX_PORTS; i++) {
if (ports[i].name != NULL) if (ports[i].name != NULL
if(strcmp(argv[1], ports[i].name) == 0) { && strcmp(argv[1], ports[i].name) == 0) {
_dump_port_info(&ports[i]); _dump_port_info(&ports[i]);
return 0; return 0;
} }
} }
return 0;
} }
port_id port_id
create_port(int32 queue_length, const char *name) create_port(int32 queue_length, const char *name)
{ {
@@ -165,11 +174,11 @@ create_port(int32 queue_length, const char *name)
void *q; void *q;
team_id owner; team_id owner;
if(ports_active == false) if (ports_active == false)
return B_BAD_PORT_ID; return B_BAD_PORT_ID;
// check & dup name // check & dup name
if(name) { if (name) {
int name_len = strlen(name); int name_len = strlen(name);
temp_name = (char *)kmalloc(min(name_len + 1, SYS_MAX_OS_NAME_LEN)); temp_name = (char *)kmalloc(min(name_len + 1, SYS_MAX_OS_NAME_LEN));