Esempio n. 1
0
static void delregion(region r)
{
  nochildren(r);
  VALGRIND_DESTROY_MEMPOOL(r);
  VALGRIND_MAKE_WRITABLE(r, sizeof(struct page));
  free_all_pages(r, &r->normal);
  // VALGRIND_DO_QUICK_LEAK_CHECK;
  // VALGRIND_FREELIKE_BLOCK(r, 0);
  // fprintf(stderr, "##delregion: r->normal.page.end = %p\n", r->normal.page.end);
  // fprintf(stderr, "##           r+1 = %p\n", r+1);
  if (r->normal.page.end) {
    // VALGRIND_MAKE_NOACCESS((char*)(r+1), r->normal.page.end - (char*)(r+1));
  }
  // VALGRIND_MAKE_NOACCESS(r, sizeof(*r));
  --num_regions_active;
}
Esempio n. 2
0
int main(int argc,char** argv)
{
    ul low,high,target;
    if(argc!=3){show_help();return 0;}
    char* end;
    low = strtoul(argv[1],&end,10);
    low *= unit_expand(*end);
    high = strtoul(argv[2],&end,10);
    high *= unit_expand(*end);
    if(low>=high){
        fprintf(stderr,"low value must less than high value\n");
        return -1;
    }
    if(high>=MAX_MB*1024){
        fprintf(stderr,"high value must less than MAX_MB(%u)\n",MAX_MB);
        return -1;
    }

    printf("\n");

    visit_pages(low);
    sleep(RESP_TIME);

    for(target = low;target<high;target+=ONE_PAGE*5){
        printf(".");
        fflush(stdout);
        visit_pages(ONE_PAGE*5);
        sleep(1);
    }
    for(target = high;target>=low;target-=ONE_PAGE*5){
        printf(".");
        fflush(stdout);
        free_pages(ONE_PAGE*5);
        sleep(1);
    }

    free_all_pages();
    sleep(1);
    printf("\n");
    return 0;
}
Esempio n. 3
0
int main(int argc,char** argv)
{
    printf("type a mem value to allocate and keep,\n"
            "type q to quit\n");
    char str[256];
    ul tg_mem;
    if(argc==2){
        char* end;
        tg_mem = strtoul(argv[1],&end,10);
        tg_mem *= unit_expand(*end);
        visit_pages(tg_mem);
    }
    int flags = fcntl(STDIN_FILENO,F_GETFL,0);
    flags |= O_NONBLOCK;
    fcntl(STDIN_FILENO, F_SETFL,flags);
    printf(":>");
    fflush(stdout);
    while(1){
/*#if LOW_CPU
        struct timespec tm_,rem_;
        tm_.tv_sec = 0;
        tm_.tv_nsec = NANO_SLEEP_TIME;
        nanosleep(&tm_,&rem_);
#endif*/
        int ret = read(0,str,sizeof(str));
        if(ret == -1 && errno == EAGAIN){
            flush_pages();
            continue;
        }
        printf(":>");
        fflush(stdout);
        free_all_pages();
        if(str[0]=='q') break;
        char* end;
        tg_mem = strtoul(str,&end,10);
        tg_mem *= unit_expand(*end);
        visit_pages(tg_mem);
    }
    return 0;
}