vmalloc, инклуды ...

Тема в разделе "WASM.UNIX", создана пользователем NorB, 29 мар 2009.

  1. NorB

    NorB New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    7
    Эм помогите написать правельно инклуды для vmalloc и cin cout если таковые работают там%)
    Вот программа, написал все правина вроде а инклуды ненаю какие и де находятся*( стоит мандрива:
    Код (Text):
    1. #include <unistd.h>
    2. #include <stdio.h>
    3. #include ...........
    4. #include.............
    5.  
    6. int count=0;
    7.  
    8.  
    9. struct pixel{
    10.   char color[1];
    11.   int x;
    12.   int y;
    13.   char attr[10];
    14.   };
    15.  
    16. pixel * arr;
    17.  
    18. void add(char *val1, int val2,int val3, char *val4){
    19.      
    20.      strcpy(arr[count].color, val1);
    21.      arr[count].x= val2;
    22.      arr[count].y= val3;
    23.      strcpy(arr[count].attr, val4);
    24.      count++;
    25.           };
    26.      
    27. void serch(char *tip){
    28.      for(int i=0; i<count;i++){
    29.              if(!strcmp(arr[i].attr,tip)){
    30.               cout<<arr[i].x<<arr[i].y<<arr[i].color<<arr[i].attr<<"\n";
    31.                                                                   };
    32.              };
    33.      };
    34.      
    35. void sort(){
    36.             char tmp1[1];
    37.             int tmp2, tmp3;
    38.             char tmp4[10];
    39.             for (int i=0; i<count-1; i++){
    40.             for (int j=0; j<count-1; j++){
    41.             if (arr[j].x>arr[j+1].x){
    42.                                     strcpy( tmp1,arr[j].color);
    43.                                     tmp2=arr[j].x;
    44.                                     tmp3=arr[j].y;
    45.                                     strcpy(tmp4,arr[j].attr);
    46.                                    
    47.                                     strcpy(arr[j].color,arr[j+1].color);
    48.                                     arr[j].x=arr[j+1].x;
    49.                                     arr[j].y=arr[j+1].y;
    50.                                     strcpy(arr[j].attr,arr[j+1].attr);
    51.                                    
    52.                                     strcpy(arr[j+1].color,tmp1);
    53.                                     arr[j+1].x=tmp2;
    54.                                     arr[j+1].y=tmp3;
    55.                                     strcpy(arr[j+1].attr,tmp4);
    56.                                                                };
    57.                                     };
    58.             };
    59.      };
    60.  
    61. void show(){
    62.      for(int i=0; i<count;i++){
    63.               cout<<arr[i].x<<arr[i].y<<arr[i].color<<arr[i].attr<<"\n";
    64.              };
    65.      };
    66.  
    67.  
    68.  
    69.  
    70. int main(int argc, char *argv[])
    71. {
    72.   arr=(pixel*)vmalloc(sizeof(pixel));
    73.    
    74.  
    75.  for (;;){
    76.   cout<<"                Menu\n\n";
    77.   cout<<" 1.Add\n";
    78.   cout<<" 2.serch\n";
    79.   cout<<" 3.sortirovka\n";
    80.   cout<<" 4.Show\n";  
    81.   cout<<" Enter choice - ";
    82.  
    83.   int c; cin>>c; cout<<"\n";
    84.   switch (c)  {
    85.   case 1:
    86.        printf("vvedite cvet, x, y, atribut\n");
    87.        char a[1];
    88.        int b,c;
    89.        char atribut[10];
    90.        cin>>a>>b>>c>>atribut;
    91.        add(a,b,c,atribut);
    92.        break;
    93.   case 2:
    94.        printf("vvedite  atribut\n");
    95.        char atr[10];
    96.        cin>>atr;
    97.        serch(atr);
    98.        break;
    99.   case 3:
    100.        printf("sortirovka po koordinate x...\n");
    101.        sort();
    102.        break;
    103.   case 4:
    104.        show();
    105.        break;
    106.        
    107.   default:cout<<"There is no such an item in the menu\n\n";
    108.   system("PAUSE");
    109.   exit(0);};
    110. };
    111.  
    112.   system("PAUSE"); 
    113.   return 0;
    114. }
     
  2. mowgli

    mowgli New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    15
    Зачем здесь применять vmalloc?!
    Вам нужно выравнивать страницы - valloc, если нет, то malloc or calloc.
    #include <stdlib.h>
    #include <malloc.h> //valloc
     
  3. NorB

    NorB New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    7
    написал
    #include <linux/vmalloc.h>
    ругается что там внутри него типы не являются именами типов 0о
     
  4. mowgli

    mowgli New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    15
    cin cout для них нужно #include <iostream>
    #include <linux/vmalloc.h> - а он у вас точно есть?!
    в самой программе ещё не хватает vfree
     
  5. NorB

    NorB New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    7
    та знаю что нехватает;)
    Да библиотека есть выдает несколько ошибок вида
    usr/include/linux/vmalloc.h gfp_t does not been declered
     
  6. mowgli

    mowgli New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    15
    vmalloc и vfree, распределяет и освобождает виртуальную память для нужд ядра,
    реализованы на основе get_free_pages, free_pages и других функций нижнего уровня для манипулирования страницами памяти. Так что предлогаю использовать функции для userspac-a.