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/