示例#1
0
EXPORT void ba_show_pages(const struct block_allocator * a) {
    fprintf(stderr, "allocated: %u\n", a->allocated);
    fprintf(stderr, "num_pages: %u\n", a->num_pages);
    fprintf(stderr, "max_empty_pages: %u\n", a->max_empty_pages);
    fprintf(stderr, "empty_pages: %u\n", a->empty_pages);
    fprintf(stderr, "magnitude: %u\n", a->magnitude);
    PRINT_NODE(a, alloc);
    PRINT_LIST(a, pages[0]);
    PRINT_LIST(a, pages[1]);
    PRINT_LIST(a, pages[2]);
    PRINT_NODE(a, last_free);

    /*
     * TODO: we should consider updating alloc/last_free here
     */

    PAGE_LOOP(a, {
	uint32_t blocks_used;
	blocks_used = p->h.used;
	fprintf(stderr, "(%p)\t%f\t(%u %d) --> (prev: %p | next: %p)\n",
		p, blocks_used/(double)a->l.blocks * 100,
		blocks_used,
		blocks_used,
		p->prev, p->next);
    });
示例#2
0
int main(){
    struct node *list = (struct node*)malloc(sizeof(struct node));
    int arr[] = {1, 2, 3, 4, 5, 6};
    fill_list(list, arr, 6);
    PRINT_LIST(list);
    reverse_k(&list, 2);
    PRINT_LIST(list);
}
示例#3
0
int main(){
    struct node *list = (struct node*)malloc(sizeof(struct node));
    struct node *list2 = (struct node*)malloc(sizeof(struct node));
    int arr[] = {1, 2, 5};
    int arr2[] = {3, 4, 5};
    fill_list(list, arr, 3);
    fill_list(list2, arr2, 3);
    struct node* sum_list = sum_of_list(list, list2);
    PRINT_LIST(list);
    PRINT_LIST(list2);
    PRINT_LIST(sum_list);
    exit(0);
}
示例#4
0
int main(int argc, char* argv[]){
    if (argc < 2)
        K = 2;
    else
        K = atoi(argv[1]);

    struct node *list = (struct node*)malloc(sizeof(struct node));
    int arr[] = {1, 2, 3, 4, 5, 6};
    fill_list(list, arr, 6);
    PRINT_LIST(list);
    rotate_list(&list);
    PRINT_LIST(list);
    exit(0);
}
示例#5
0
void reverse_k(struct node **list, int k){
    struct node* l = *list;
    struct node *prev = NULL, *next, *cur = l;
    while(cur){
        int i = 0;
        for(; i<k; i++){
            next = cur->next;
            cur->next = prev;
            prev = cur;
            cur = next;
        }
        l->next = cur;
        *list = prev;
        PRINT_LIST(*list);
        for(i=0; i < k; i++){
            if(cur){
                prev = cur;
                cur = cur->next;
            }
            else
                return;
        }

    }

}
static void
md_obs_list_add(machine_descrip_t *mdescp)
{
	mutex_enter(&obs_list_lock);

	mdescp->next = obs_machine_descrip_list;
	obs_machine_descrip_list = mdescp;

	mutex_exit(&obs_list_lock);
	PRINT_LIST();
}
示例#7
0
int main()
{
  int n;
  mpf_set_default_prec(PREC_BITS);
  puts("/* generated by gen_poly_imp.c */\n");
  printf("#define GLL_LAG_FIX_MAX %d\n\n",GLL_LAG_FIX_MAX);
  /*puts("typedef void gll_lag_fun(double *p, int d, int n, double x);\n");*/
  for(n=2;n<=GLL_LAG_FIX_MAX;++n)
      print_gll_lag_fix(n), puts("");
  printf(STATIC "const double *const gllz_table[%d] = {\n  ",
    GLL_LAG_FIX_MAX-3);
  PRINT_LIST(i, 4,8,(GLL_LAG_FIX_MAX+1),
    printf("gllz_%02d",i), ", ",",\n  ");
  puts("\n};");
  puts("");
  printf(STATIC "lagrange_fun *const gll_lag_table[%d] = {\n  ",
    GLL_LAG_FIX_MAX-1);
  PRINT_LIST(i, 2,6,(GLL_LAG_FIX_MAX+1),
    printf("&gll_lag_%02d",i), ", ",",\n  ");
  puts("\n};");
  puts("");
  return 0;
}
static void
md_obs_list_remove(machine_descrip_t *mdescp)
{
	machine_descrip_t *lmdescp;

	mutex_enter(&obs_list_lock);

	lmdescp	= obs_machine_descrip_list;

	if (obs_machine_descrip_list == mdescp) {
		obs_machine_descrip_list = mdescp->next;
	} else {
		while (lmdescp != NULL) {
			if (lmdescp->next == mdescp) {
				lmdescp->next = mdescp->next;
				mdescp->next = NULL;
				break;
			}
			lmdescp = lmdescp->next;
		}
	}
	mutex_exit(&obs_list_lock);
	PRINT_LIST();
}
示例#9
0
static void print_gll_lag_fix(int n)
{
  int i;
  DECLARE_1VAR(z);
  if(n>3) {
    printf("static const double gllz_%02d[%2d] = {\n  ",n,n/2-1);
    for(i=1;i<=n/2-1;++i) {
      lobatto_node(z, n,n-1-i);
      if(i!=1) printf(",\n  ");
      gmp_printf("%.*Fg",DIGITS,z);
    }
    puts("\n};\n");
  }
  printf(STATIC "void gll_lag_%02d(double *restrict p, double *restrict data,\n"
           "                       unsigned n, int d, double xh)\n{\n",n);
  printf("  const double *restrict w = data;\n");
  printf("  const double x = xh*2;\n");
  #define PRINT_D(i) do { \
    printf("d%02d=x",i); \
    if(2*i+1==n)    printf("              "); \
    else if(i==0)   printf("+2            "); \
    else if(i==n-1) printf("-2            "); \
    else if(i<n/2)  printf("+2*gllz_%02d[%2d]",n,i-1); \
    else            printf("-2*gllz_%02d[%2d]",n,n-2-i); \
  } while(0)
  printf("%s",                            "  const double ");
  PRINT_LIST(i, 0,3,n, PRINT_D(i),",",",\n               ");
  #undef PRINT_D
  #define PRINT_U0(i) (i==0  ?printf("    1"):printf("u0_%02d",i))
  #define PRINT_V0(i) (i==n-1?printf("    1"):printf("v0_%02d",i))
  #define PRINT_U1(i) (i<=1  ?printf("    %d",i      ):printf("u1_%02d",i))
  #define PRINT_V1(i) (i>=n-2?printf("    %d",n-1-(i)):printf("v1_%02d",i))
  #define PRINT_U2(i) (i<=1  ?printf("    0"): \
                      (i==2  ?printf("    2"):printf("u2_%02d",i)))
  #define PRINT_V2(i) (i>=n-2?printf("    0"): \
                      (i==n-3?printf("    2"):printf("v2_%02d",i)))
  printf("%s",";\n  const double ");
  PRINT_LIST(i, 1,3,n,
    (PRINT_U0(i),putchar('='),PRINT_U0(i-1),printf("*d%02d",i-1)),
    ",",",\n               ");
  printf("%s",";\n  const double ");
  PRINT_LIST(i, 1,3,n,
    (PRINT_V0(n-1-i),putchar('='),printf("d%02d*",n-i),PRINT_V0(n-i)),
    ",",",\n               ");
  printf("%s",";\n  ");
  PRINT_LIST(i, 0,3,n, 
    (printf("p[%2d]=w[%2d]*",i,i),PRINT_U0(i),putchar('*'),
     PRINT_V0(i)),"; ",";\n  ");
  puts(";\n  if(d>0) {");
  if(n>2) {
    printf("%s","    const double ");
    PRINT_LIST(i, 2,2,n,
      (PRINT_U1(i),putchar('='),PRINT_U1(i-1),printf("*d%02d",i-1),
       putchar('+'),PRINT_U0(i-1)),
      ",",",\n                 ");
    printf("%s",";\n    const double ");
    PRINT_LIST(i, 2,2,n,
      (PRINT_V1(n-1-i),putchar('='),printf("d%02d*",n-i),PRINT_V1(n-i),
       putchar('+'),PRINT_V0(n-i)),
      ",",",\n                 ");
    puts(";");
  }
  for(i=0;i<n;++i) {
    printf("    p[%d+%2d]=2*w[%2d]*(",n,i,i);
    if(i==0)        printf("                  "),PRINT_V1(0);
    else if(i==n-1) PRINT_U1(i),printf("                  ");
    else PRINT_U1(i),putchar('*'),PRINT_V0(i),putchar('+'),
         PRINT_U0(i),putchar('*'),PRINT_V1(i);
    puts(");");
  }
  puts("    if(d>1) {");
  if(n>3) {
    printf("%s","      const double ");
    PRINT_LIST(i, 3,2,n,
      (PRINT_U2(i),putchar('='),PRINT_U2(i-1),printf("*d%02d",i-1),
       printf("+2*"),PRINT_U1(i-1)),
      ",",",\n                   ");
    printf("%s",";\n      const double ");
    PRINT_LIST(i, 3,2,n,
      (PRINT_V2(n-1-i),putchar('='),printf("d%02d*",n-i),PRINT_V2(n-i),
       printf("+2*"),PRINT_V1(n-i)),
      ",",",\n                   ");
    puts(";");
  }  
  if(n<3) for(i=0;i<n;++i) printf("      p[2*%d+%2d]=0;\n",n,i);
  else for(i=0;i<n;++i) {
      printf("      p[2*%d+%2d]=4*w[%2d]*(",n,i,i);
      if(i>1)
        PRINT_U2(i),putchar('*'),PRINT_V0(i);
      else printf("           ");
      if(i>0 && i<n-1)
        printf("+2*"),PRINT_U1(i),putchar('*'),PRINT_V1(i);
      else printf("              ");
      if(i<n-2)
        putchar('+'),PRINT_U0(i),putchar('*'),PRINT_V2(i);
      else printf("            ");
      puts(");");
  }
  #undef PRINT_U0
  #undef PRINT_V0
  #undef PRINT_U1
  #undef PRINT_V1
  #undef PRINT_U2
  #undef PRINT_V2
  puts("    }\n  }\n}");
}