Exemplo n.º 1
0
void testmap(void)
{
	pages = calloc(1, PAGES * sizeof(struct page));
	if (!pages)
		exit(100);

	printf("simple tests\n");
#define MB ((1024*1024)/pagesize)
	setpol(0, PAGES, MPOL_INTERLEAVE, 3);
	setpol(0, MB, MPOL_BIND, 1);
	setpol(MB, MB, MPOL_BIND, 1);
	setpol(MB, MB, MPOL_DEFAULT, 0);
	setpol(MB, MB, MPOL_PREFERRED, 2);
	setpol(MB/2, MB, MPOL_DEFAULT, 0);
	setpol(MB+MB/2, MB, MPOL_BIND, 2);
	setpol(MB/2+100, 100, MPOL_PREFERRED, 1);
	setpol(100, 200, MPOL_PREFERRED, 1);
	printf("done\n");

	for (;;) {
		unsigned long offset = random() % PAGES;
		int policy = random() % (MPOL_MAX);
		unsigned long nodes = random() % 4;
		long length = random() % (PAGES - offset);

		/* validate */
		switch (policy) {
		case MPOL_DEFAULT:
			nodes = 0;
			break;
		case MPOL_INTERLEAVE:
		case MPOL_BIND:
			if (nodes == 0)
				continue;
			break;
		case MPOL_PREFERRED:
			if (popcnt(nodes) != 1)
				continue;
			break;
		}

		setpol(offset, length, policy, nodes);

	}
}
Exemplo n.º 2
0
int main(int argc,char **argv){
  int i,j,k,l,c;
  unsigned long a,x,count=1;
  //  unsigned char cc[K]={0};
  unsigned char m[K],mm[T]={0};
  time_t timer;
  FILE *fp,*fq;
  
  unsigned char g2[7]={1,0,9,0,0,6,4};
  //  unsigned char s[K]={0}; //{4,12,7,8,11,13};
  
  unsigned char ee[10]={1,2,3,4,5,6,7,8,9,10};
  unsigned char zz[T]={86,97,114,105,97,98,108,101,32,80,111,108,121,110,111,109};
  //  unsigned char zz[T]={10,97,114,105,97,98,108,101,32,80,111,108,121,110,111,109};
  int y;
  OP f,h,r,w;
  vec v;
  unsigned char d=0;
  
  //  unsigned char syn[K]={4,12,7,8,11,13};
  //  unsigned char g[K+1]={1,0,0,0,1,0,1};
  
  //  makegf(M);
  //  makefg(M);
  
  //  zz[0]=1;
  //zz[1]=2;
  //zz[2]=4;
  w=setpol(g,K+1);
  printpol(o2v(w));
  //    exit(1);
  
  /*
    fp=fopen(argv[1],"rb");
    fq=fopen(argv[2],"wb");
    
    
    while((c=fread(zz,1,T,fp))>0){
    
    for(i=0;i<M;i++){
    d=trace(w,(unsigned char)i);
    printf("%d,",d);
    if(d==0){
    printf("%i bad trace 0\n",i);
    exit(1);
    }
    }
    printf("\n");
    //exit(1);
    */
  
  //エラーの生成
  for(i=0;i<T;i++)
    zz[i]=i+1;
  
  det(g);
  for(i=0;i<K;i++){
    for(j=0;j<M;j++)
      printf("%d,",mat[i][j]);
    printf("\n");
  }
  //exit(1);
  
  //  シンドローム多項式の生成
  printf("zz=");
  for(i=0;i<K;i++){
    syn[i]=0;
    
    for(j=0;j<T;j++){
      printf("%u,",zz[j]);
      syn[i]^=gf[mlt(fg[zz[j]],fg[mat[i][j]])];
    }
    //    printf("%d,",syn[i]);
  }
  printf("\n");
  //    exit(1);  
  
  f=setpol(syn,K);
  printpol(o2v(f));
  //  exit(1);
  r=decode(w,f);
  
  for(i=0;i<T;i++){
    mm[i]=r.t[i].a;
    printf("e=%d %d\n",r.t[i].a,r.t[i].n);
  }
  /*
    fwrite(mm,1,T,fq);
    }
  */
  //  fclose(fp);
  //  fclose(fq);
  
  // h2g(mat);
  //  exit(1);
  
  return 0;
}
Exemplo n.º 3
0
//多項式からパリティチェック行列を生成する
void det(unsigned char g[K+1]){
  OP f,h,w;
  unsigned char cc[K+1]={0},d[2]={0},HH[K][M]={0};
  int i,j,a,b;
  oterm t={0};
  vec e;
  
  for(i=0;i<K+1;i++)
    printf("%d ",cc[i]);
  printf("\n");
  
  
  for(i=0;i<M;i++){
    memcpy(cc,g,K+1);
    w=setpol(g,K+1);
    
    a=trace(w,i);
    
    
    printf("a=");
    printf("%d ",gf[oinv(a)]);
    
    printf("\n");
    
    
    for(j=0;j<K+1;j++)
      printf("%d ",cc[j]);
    printf("\n");
    
    cc[K]^=a;
    f=setpol(cc,K+1);
    printpol(o2v(f));
    //  exit(1);
    
    for(j=0;j<K+1;j++)
      printf("%d ",cc[j]);
    printf("\n");
    
    //    exit(1);
    //d[0]=i;
    //d[1]=1;
    h.t[0].a=i;
    h.t[0].n=0;
    h.t[1].a=1;
    h.t[1].n=1;
    
    memset(ss.t,0,DEG);
    omod(f,h);
    
    //  printpol(o2v(ss));
    //  exit(1);
    
    b=oinv(a);
    t.a=gf[b];
    t.n=0;
    //  printf("t=%d\n",t.a);
    //  exit(1);
    w=oterml(ss,t);
    //  printpol(o2v(w));
    e=o2v(w);
    for(j=0;j<K;j++){
      printf("%d,",e.x[K-1-j]);
      HH[j][i]=e.x[K-1-j];
    }
    printf("\n");
    
    //    if(i==1)
    //  exit(1);
  }
  for(i=0;i<K;i++){
    for(j=0;j<M;j++){
      mat[i][j]=HH[i][j];
      //      printf("%d,",mat[i][j]);
    }
    printf("\n");
  }
  
  //      exit(1);
}