rem: dprintf("sem 0x%lx doesn't exist!\n", num);
add: kprintf("sem 0x%lx doesn't exist!\n", num);
context: dump_sem_info(int argc, char **argv){	int i;	if (argc < 2) {		dprintf("sem: not enough arguments\n");		return 0;	}	// 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') {		unsigned long num = strtoul(argv[1], NULL, 16);		if (num > KERNEL_BASE && num <= (KERNEL_BASE + (KERNEL_SIZE - 1))) {			// XXX semi-hack			dump_sem((struct sem_entry *)num);			return 0;		} else {			unsigned slot = num % sMaxSems;			if (sSems[slot].id != (int)num) {				dprintf("sem 0x%lx doesn't exist!\n", num);				return 0;			}			dump_sem(&sSems[slot]);			return 0;		}	}	// walk through the sem list, trying to match name	for (i = 0; i < sMaxSems; i++) {		if (sSems[i].u.used.name != NULL			&& strcmp(argv[1], sSems[i].u.used.name) == 0) {			dump_sem(&sSems[i]);			return 0;		}	}	return 0;}