boolean commandHubExt(char *command, struct paraMessage *pm, struct paraMultiMessage *pmm) /* Send a command to hub. */ { pmInitFromName(pm, paraHubHost, paraHubPort); if (pmm) { /* ensure the multi-message response comes from the correct ip and has no duplicate msgs*/ pmmInit(pmm, pm, pm->ipAddress.sin_addr); } return pmSendString(pm, hubRudp, command); }
void main(struct mbs_s *mbs, unsigned ebx, unsigned esp){ screenClear(); setTextColor(TEXTC_LGREEN); printk("\n%C%s :-)%C V. %C%s%C, Release %d (%s)\n", TEXTC_LRED, KERNEL_NAME, TEXTC_DEFAULT, TEXTC_WHITE, KERNEL_VERSION, TEXTC_DEFAULT, KERNEL_RELEASE, KERNEL_BUILD_DATE); printk(KERNEL_COPYRIGHT "\n"); printk("Licensed under " KERNEL_LICENSE ".\n\n"); printk("Init physical memory manager\n"); pmmInit(mbs, &kernelBase, &kernelEnd); //printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT); printk("Init GDT ... "); gdtInit(); printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT); /* unsigned int kdataseg, kcodeseg; asm("mov %%ds, %0" : "=g"(kdataseg)); asm("mov %%cs, %0" : "=g"(kcodeseg)); printk("\tKernel codesegment ... "); kcodeseg == GDT_KERNEL_CODESEG ? printk("%C*k", TEXTC_GREEN) : printk("%Cfailed", TEXTC_RED); printk("%C\n", TEXTC_DEFAULT); printk("\tKernel datasegment ... "); kdataseg == GDT_KERNEL_DATASEG ? printk("%C*k", TEXTC_GREEN) : printk("%Cfailed", TEXTC_RED); printk("%C\n", TEXTC_DEFAULT); */ /**/ printk("Init IDT ... "); idtInit(); printk("%Cdone%C\n", TEXTC_GREEN, TEXTC_DEFAULT); printk("Test interrupts\n"); asm volatile("push %eax; xor %eax, %eax; int $0x87; pop %eax;"); char *b = (char *)pmmAllocNext(4096); printk("b = %x\n", b); //systemPanic("STOP\n"); printk("Init Multitasking...\n"); initMultitasking(); printk("Init Multitasking done\n"); asm volatile("sti"); //pmmGetFreeMem(); /* asm volatile( "push %eax;" "xor %eax, %eax;" "mov $0x13, %al;" "int $0x10;" "pop %eax;" ); unsigned char *VGA = (unsigned char *)0xA0000; unsigned int x; for(x = 0; x < 320 * 200; x++) VGA[x] = (unsigned char)128; */ // should never be reached printk("Kernel infinite loop."); while(1); }