[so2] Intrebare so2

Daniel Baluta daniel.baluta at gmail.com
Sun Mar 15 15:38:29 EET 2015


+ so2 list

2015-03-15 15:35 GMT+02:00 Adrian TUDOR <office at adrian-tudor.com>:
> Salut Daniel,
>
>
>
> Am si eu niste dileme legate de tema 1 la so2.
>
>
>
> Nu am gasit ce fac exact parametrii din kretprobe. Am gasit un exemplu pe
> net dar nu explica foarte bine.
>
>
>
> https://stuff.mit.edu/afs/sipb/contrib/linux/samples/kprobes/kretprobe_example.c
>
>
>
> static struct kretprobe my_kretprobe = {
>
>                 .handler                               = ret_handler,
>
>                 .entry_handler                 = entry_handler,
>
>                 .data_size                           = sizeof(struct
> my_data),
>
>                 /* Probe up to 20 instances concurrently. */
>
>                 .maxactive                          = 20,
>
> };
>
>
>
> Arata cam asa.
>
>
>
> Campul handler e functia care imi instrumenteaza mie ce vreau sa fac.
>
> Maxactive, numarul de probe concurente
>
>
>
>
>
> Dar entry_handler si data_size nu inteleg rolul lor.
>
>
>
> /* Here we use the entry_hanlder to timestamp function entry */
>
> static int entry_handler(struct kretprobe_instance *ri, struct pt_regs
> *regs)
>
> {
>
>                 struct my_data *data;
>
>                 if (!current->mm)
>
>                                 return 1;              /* Skip kernel
> threads */
>
>                 data = (struct my_data *)ri->data;
>
>                 data->entry_stamp = ktime_get();
>
>                 return 0;
>
> }
>
>
>
> struct my_data {
>
>                 ktime_t entry_stamp;
>
> };
>
>
>
> Practic salveaza in data niste parametrii. Dar o data iesit din functie se
> duc datele alea, deci care e rolul ei?
>
>
>
> De ce mai e nevoie de functia de mai sus din moment ce nu face nimic in ea.
>
> Ba mai mult in functia de handler face din nou
>
>
>
> struct my_data *data = (struct my_data *)ri->data;
>
>
>
>
>
>
>
> O alta intrebare daca vreau sa am o lista si fiecare element al listei sa
> aibe si el cate o lista.
>
> Declar lista initiala.
>
>
>
> Iar cand declar cate un element nou, cum ii declar head-ul pentru noua lista
> listi?
>
>
>
> Merge ceva in genul
>
>
>
> struct l_list mylist;
>
> INIT_LIST_HEAD(&mylist.list);
>
>
>
> Nu sunt sigur care pointer trebuie sa il pasez pentru a imi initia noua
> lista.
>
> Nici nu am gasit exact un exemplu.
>
>
>
> Merci,
>
> Adrian
>
>


More information about the so2 mailing list