Beispiel #1
0
static void
mapscan(kvm_t *kd, vm_map_entry_t entryp, vm_offset_t *lastp)
{
    struct vm_map_entry entry;

    if (entryp == NULL)
	return;
    kkread(kd, (u_long)entryp, &entry, sizeof(entry));
    mapscan(kd, entry.rb_entry.rbe_left, lastp);
    if (*lastp != entry.start) {
	    printf("%4ldM %p %08lx-%08lx (%6ldK) EMPTY\n",
		total_used / 1024 / 1024,
		entryp,
		*lastp, entry.start,
		(entry.start - *lastp) / 1024);
	    total_empty += entry.start - *lastp;
    }
    printf("%4ldM %p %08lx-%08lx (%6ldK) type=%d object=%p\n",
	total_used / 1024 / 1024,
	entryp,
	entry.start, entry.end,
	(entry.end - entry.start) / 1024,
	entry.maptype,
	entry.object);
    total_used += entry.end - entry.start;
    *lastp = entry.end;
    mapscan(kd, entry.rb_entry.rbe_right, lastp);
}
Beispiel #2
0
extern COLOR *
nextscan(void)				/* read and condition next scanline */
{
	if (nread >= numscans(&inpres)) {
		if (cwarpfile != NULL)
			free3dw(cwarp);
		free((void *)scanbuf);
		return(scanbuf = NULL);
	}
	if (what2do&DO_ACUITY)
		acuscan(scanbuf, nread);
	else if (freadscan(scanbuf, scanlen(&inpres), infp) < 0) {
		fprintf(stderr, "%s: %s: scanline read error\n",
				progname, infn);
		exit(1);
	}
	if (what2do&DO_VEIL)			/* add veiling */
		addveil(scanbuf, nread);
	if (what2do&DO_COLOR)			/* scotopic color loss */
		scotscan(scanbuf, scanlen(&inpres));
	if (what2do&DO_LINEAR)			/* map luminances */
		sfscan(scanbuf, scanlen(&inpres), scalef);
	else
		mapscan(scanbuf, scanlen(&inpres));
	if (mbcalfile != NULL)			/* device color correction */
		mbscan(scanbuf, scanlen(&inpres), &mbcond);
	else if (cwarpfile != NULL)		/* device color space warp */
		cwscan(scanbuf, scanlen(&inpres), cwarp);
	else if ((lumf == cielum) | (inprims != outprims))
		matscan(scanbuf, scanlen(&inpres), mbcond.cmat);
	nread++;
	return(scanbuf);
}
Beispiel #3
0
int
main(int ac, char **av)
{
    const char *corefile = NULL;
    const char *sysfile = NULL;
    vm_page_t mptr;
    struct vm_page m;
    struct vm_object obj;
    kvm_t *kd;
    int ch;
    int hv;
    int i;
    const char *qstr;
    const char *ostr;
    vm_offset_t last;

    while ((ch = getopt(ac, av, "M:N:dv")) != -1) {
	switch(ch) {
	case 'd':
	    ++debugopt;
	    break;
	case 'v':
	    ++verboseopt;
	    break;
	case 'M':
	    corefile = optarg;
	    break;
	case 'N':
	    sysfile = optarg;
	    break;
	default:
	    fprintf(stderr, "%s [-M core] [-N system]\n", av[0]);
	    exit(1);
	}
    }
    ac -= optind;
    av += optind;

    if ((kd = kvm_open(sysfile, corefile, NULL, O_RDONLY, "kvm:")) == NULL) {
	perror("kvm_open");
	exit(1);
    }
    if (kvm_nlist(kd, Nl) != 0) {
	perror("kvm_nlist");
	exit(1);
    }
    kkread(kd, Nl[0].n_value, &kmap, sizeof(kmap));
    last = kmap.header.start;
    mapscan(kd, kmap.rb_root.rbh_root, &last);

    printf("%4ldM 0x%016jx %08lx-%08lx (%6ldK) EMPTY\n",
	total_used / 1024 / 1024,
	(intmax_t)NULL,
	last, kmap.header.end,
	(kmap.header.end - last) / 1024);
    total_empty += kmap.header.end - last;

    printf("-----------------------------------------------\n");
    printf("Total empty space: %7ldK\n", total_empty / 1024);
    printf("Total used  space: %7ldK\n", total_used / 1024);
}