Hi all, i've some problem to understand what some field of process' descriptor do. I need to save some process' information to checkpoint it. I get process registers by doing: struct pt_regs *regs_pointer = ((struct pt_regs *) (2*PAGE_SIZE + (unsigned long) p)) - 1; I then print the regs_pointer values (by means of a function like the show_regs function in arch/i386/kernel/process.c) end the result is: EIP: 0023:[<080485b9>] ESP: 002b:bf5ffad0 EFLAGS: 00200297 EAX: 00000001 EBX: 4003abc0 ECX: 00000001 EDX: 00000010 ESI: bf5ffbe0 EDI: 00000000 EBP: bf5ffadc DS: 002b ES: 002b ESP: bf5ffad0 Then I print the mm_struct's fields: start_code = 08048000 end_code = 08048721 start_data = 08049724 end_data = 0804983c start_brk = 08049840 brk = 0804c000 start_stack = bffff5a0 arg_start = bffff6f1 arg_end = bffff6fa env_start = bffff6fa env_end = bffffff3 Finally, I print the thread_struct's fields: esp0 = cc932000 eip = c011627f esp = cc931f88 By comparing the results, I note that the regs.esp, the mm->start_stack, the p->thread->esp and the p->thread->esp0 differ each other. What's the meaning of each field? What these fields differ in? The same question is for regs.eip and p->thread->eip. Thanks. Vincenzo Mallozzi. ___________________________________ Nuovo Yahoo! Messenger: E' molto più divertente: Audibles, Avatar, Webcam, Giochi, Rubrica? Scaricalo ora! http://it.messenger.yahoo.it -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/