Exemplo n.º 1
0
long test()
{
    volatile unsigned long a = 1;
    unsigned long *p = NULL;
    p = (unsigned long *)malloc(sizeof(unsigned long));
    *p = 1;
    unsigned long p_phy_addr = mem_addr_vir2phy((unsigned long)p);
    unsigned long a_phy_addr = mem_addr_vir2phy((unsigned long)&a);
    FILE* fp = fopen("hello.txt", "a+");
    long i = 0;

    while(1)
    {
        //int s1 = a, s2 = *p;
        //printf("===%ld %ld====", s1, s2);
       /* printf("pid = %5d, times = %4ld, a's addr = %p [(physical : 0x%lx) : 0x%lx\n"
               "p point's addr = %p q's addr = %p [(physical : 0x%lx) : 0x%lx]\n",
                getpid( ), i,
                &a, a_phy_addr, (volatile unsigned long)a,
                &p, p, p_phy_addr, (volatile unsigned long)*p);*/
        fprintf(fp, "pid = %d, %ld, a's addr = %p [0x%lx : %ld]"
               ", p point addr = %p q's addr = %p [0x%lx : %ld]\n",
                getpid( ), i,
                &a, a_phy_addr, a,
                &p, p, p_phy_addr, (volatile unsigned long)*p);
        fflush(fp);
        sleep(1);
        i++;
    }
    fclose(fp);
    return 0;
}
Exemplo n.º 2
0
int main(int argc, char **argv)
{
    int a = 0x12345678;
    unsigned long phy;

    mem_addr_vir2phy((unsigned long)&a, &phy);

    printf("vaddr = %p, phy = 0x%lx\n", &a, phy);
    printf("Enter any key to exit\n");
    fgetc(stdin);

    return 0;
}
Exemplo n.º 3
0
int main(int argc, char* argv[]) {
    unsigned long a = 0xffbbccaa;
    unsigned long vir = reinterpret_cast<unsigned long>(&a);
    unsigned long phy = 0;

    fprintf(stderr, "sizeof(unsigned long):%lu, sizeof(unsigned long*):%lu\n", sizeof(unsigned long), sizeof(unsigned long*));
    mem_addr_vir2phy(vir, &phy);
    fprintf(stderr, "1 vir:0x%lx, phy: 0x%lx getchar to continue\n", vir, phy);
    getchar();
    a = 0x11111111;
    fprintf(stderr, "2 vir:0x%lx, phy: 0x%lx getchar to continue\n", vir, phy);
    getchar();
    fprintf(stderr, "3 vir:0x%lx, phy: 0x%lx a:0x%lx\n", vir, phy, a);
}
Exemplo n.º 4
0
int findItByPagemap(void* addr, int nPages, int* sockFds, int nSize){
	unsigned int phyAddr = -1;
	struct timespec timeSt1;


	for(int j=0; j<nPages; j++){
		if( 0 != mem_addr_vir2phy((unsigned int)addr+j*0x1000, &phyAddr)){
			printf("failed get phyaddr\n");
			return -1;
		}
		for(int i=0; i<nSize; i++){
			//printf("posionCalculateValues[i]=%x, phyAddr=%x\n",
			//		posionCalculateValues[i], phyAddr);
			//if( 0 == posionCalculateValues[i] || posionCalculateValues[i] < phyAddr || posionCalculateValues[i] > phyAddr + 0x1000 ){}
			if( 0 == posionCalculateValues[i]  ){
				continue;
			}
			/*if( !( posionCalculateValues[i] >= phyAddr && posionCalculateValues[i] <= phyAddr + 0x1000 ) &&
					!( posionValues[i] >= phyAddr && posionValues[i] <= phyAddr + 0x1000 ) ){
				continue;
			}*/
			if( !( posionCalculateValues[i] >= phyAddr && posionCalculateValues[i] <= phyAddr + 0x1000 ) ){
				continue;
			}
			timeSt1.tv_sec = 0;
			timeSt1.tv_nsec=0;
			if( 0 != ioctl(sockFds[i], 0x8907, &timeSt1) ){
				//printf("ioctl failed\n");
				continue;
			}
			if(timeSt1.tv_sec != 0xAB5DF2C9 &&
					timeSt1.tv_sec != 0xB0B0B0B0){
				continue;
			}
			printf("%d=CalculateValue=%x, Value=%x, phyAddr=%x, tv_sec=%x\n",
					i, posionCalculateValues[i], posionValues[i], phyAddr, (unsigned int)timeSt1.tv_sec);
			return sockFds[i];
		}
	}
	return -1;
}