int get_appointments(const char *file_name, Appointment_t appointments[], int max_size) { int year,month,day,hour,min,tc1,tc2; TCId_no_t tc; Time_t time; Date_t date; char dead; int i=0; int status; int flag=1; FILE* inp; inp=fopen(file_name,"r"); do{ status=fscanf(inp,"%6d%5d %d %d %d %2d%c%2d ",&tc1,&tc2,&year,&month,&day,&hour,&dead,&min); if(status == EOF || i == max_size) flag=0; else { time=get_time(hour,min); date=get_date(year,month,day,time); tc=get_tc(tc1,tc2); appointments[i].date=date; appointments[i].people.id_no=tc; ++i; } }while(flag); fclose(inp); return i; }
int get_people(const char *file_name, People_t people[], int max_size) { int tc1,tc2; int i=0; int flag=1; int status; char name[30],surname[30]; gender_t gender; char gndr; TCId_no_t id; FILE* inp; inp=fopen(file_name,"r"); do{ status=fscanf(inp,"%6d%5d %s %s %c\n",&tc1,&tc2,name,surname,&gndr); switch (gndr){ case 'M' : gender = MALE; break; case 'F' : gender = FEMALE; break; } if(status == EOF || i == max_size) flag=0; else { id=get_tc(tc1,tc2); people[i].id_no=id; strcpy(people[i].name,name); strcpy(people[i].surname,surname); people[i].gender=gender; ++i; } }while(flag); fclose(inp); return i; }
int _start(char *boot_args, char *monitor) { unsigned int bootdir_pages; memset(&ka, 0, sizeof(ka)); init_nextmon(monitor); dprintf("\nNewOS stage2: args '%s', monitor %p\n", boot_args, monitor); probe_memory(&ka); dprintf("tc 0x%x\n", get_tc()); dprintf("urp 0x%x\n", get_urp()); dprintf("srp 0x%x\n", get_srp()); // calculate how big the bootdir is { int entry; bootdir_pages = 0; for (entry = 0; entry < BOOTDIR_MAX_ENTRIES; entry++) { if (bootdir[entry].be_type == BE_TYPE_NONE) break; bootdir_pages += bootdir[entry].be_size; } ka.bootdir_addr.start = (unsigned long)bootdir; ka.bootdir_addr.size = bootdir_pages * PAGE_SIZE; dprintf("bootdir: start %p, size 0x%x\n", (char *)ka.bootdir_addr.start, ka.bootdir_addr.size); } // begin to set up the physical page allocation range data structures ka.num_phys_alloc_ranges = 1; ka.phys_alloc_range[0].start = ka.bootdir_addr.start; ka.phys_alloc_range[0].size = ka.bootdir_addr.size; // allocate a stack for the kernel when we jump into it ka.cpu_kstack[0].start = allocate_page(&ka); ka.cpu_kstack[0].size = PAGE_SIZE; ka.num_cpus = 1; return 0; }