예제 #1
0
파일: pmm.c 프로젝트: haozhun/ucore_plus
/**
 * Print the page table.
 *     If no current->mm->pgdir, print boot_pgdir, or print the pgdir of the current user process instead.
 */
void
print_pgdir(int (*printf)(const char *fmt, ...)) {
    printf("-------------------- BEGIN --------------------\n");
    size_t left, right = 0, perm;
    pde_t* pgdir = boot_pgdir;
    if (current != NULL && current->mm != NULL && current->mm->pgdir != NULL) {
        pgdir = current->mm->pgdir;
    }

    while ((perm = get_pgtable_items(0, NPDEENTRY, right, pgdir, &left, &right)) != 0) {
        printf("PDE(%03x) %08x-%08x %08x %s\n", right - left,
               left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm));
        size_t l, r = left * NPTEENTRY;
        while ((perm = get_pgtable_items_2 (left * NPTEENTRY, right * NPTEENTRY, r, pgdir, &l, &r)) != 0) {
            printf("  |-- PTE(%05x) %08x-%08x %08x %s\n", r - l,
                   l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm));
        }
    }
    printf("--------------------- END ---------------------\n");
}
예제 #2
0
파일: pmm.c 프로젝트: TySag/project
//print_pgdir - print the PDT&PT
void print_pgdir(int (*printf) (const char *fmt, ...))
{
	printf("-------------------- BEGIN --------------------\n");
	size_t left, right = 0, perm;
	while ((perm =
		get_pgtable_items(0, NPDEENTRY, right, vpd, &left,
				  &right)) != 0) {
		printf("PDE(%03x) %08x-%08x %08x %s\n", right - left,
		       left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE,
		       perm2str(perm));
		size_t l, r = left * NPTEENTRY;
		while ((perm =
			get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY,
					  r, vpt, &l, &r)) != 0) {
			printf("  |-- PTE(%05x) %08x-%08x %08x %s\n", r - l,
			       l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE,
			       perm2str(perm));
		}
	}
	printf("--------------------- END ---------------------\n");
}
예제 #3
0
파일: s3.c 프로젝트: aunp2015/AUNP2015
void	semStatus(int semid) {
	int	ret;
	struct	semid_ds ds;

	ret = semctl(semid, 0, IPC_STAT, &ds);
	if (ret == -1) { perror("semctl"); exit(-1); }
	fprintf(stderr, "t=%ld,sid=%d,otime=%ld,ctime=%ld,nsems=%d,perm:%s\n", 
		(long)time(NULL),
		semid,
		(long)ds.sem_otime, 
		(long)ds.sem_ctime, 
		(int)ds.sem_nsems,
		perm2str(ds.sem_perm)
	);
}