multumesc pentru indicatii.
extraordinara mostra de cod

----- Original Message ----- 
From: "Octavian Purdila" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Sunday, May 29, 2005 7:29 PM
Subject: [rlug] Re: programare modul kernel


> On Sunday 29 May 2005 06:33 pm, egl wrote:
>> vreau sa trimit o structura de date
>> (o lista mai exact) din 'user space'in
>> 'kernel space' de unde sa o prelucrez
>> intr-un modul kernel.daca un element al
>> listei are campuri de genul int sau char*
>> nu e chiar o problema folosind get_user()
>> si apeluri ioctl, insa daca am multe elemente
>> sau pur si simplu un vector de 100 de intregi
>
> Vezi copy_from_user().
>
>
>> devine complicat (mai degraba ineficient mi se
>> pare sa trimit cate o variabila si dupa aia sa
>> ma intreb daca mai vine ceva sau e gata).
>>  ce solutie am la indemana?
>>
>
> Daca inteleg eu bine, vrei sa transferi lista intr-un singur ioctl:
>
> int ioctl(FILE *file, int cmd, void *arg)
> {
> struct my_struct {
>  struct my_struct *next;
>  ....
> } *i, *j, *head=NULL;
>
> do {
>   if (!(j=kmalloc(sizeof(*j), GFP_KERNEL))) {
>      //stergi bucata de lista partial copiata
>     return -ENOMEM;
>  }
>
>  if (copy_from_user(j, arg, sizeof(*j))) {
>   //stergi bucata de lista partial copiata
>   return -EFAULT;
>  }
>
>  arg=j->next; j->next=NULL;
>  if (!head) {
>   head=i=j;
>  } else {
>    i->next=j; i=j;
>  }
>
> } while (arg);
> }
>
> tavi
>
> --- 
> Detalii despre listele noastre de mail: http://www.lug.ro/
>
>
> __________ NOD32 1.1113 (20050529) Information __________
>
> This message was checked by NOD32 antivirus system.
> http://www.nod32.com
>
> 



--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui