On Tue, 30 Oct 2012, Fan Yang wrote: > 2012/10/29 Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> > > > Hi Fan... > > > > On Sun, Oct 28, 2012 at 9:02 PM, Fan Yang <lljyangfan@xxxxxxxxx> wrote: > > > > > > [root@shell--box kernel_mod]# dmesg -c > > > ********************************** > > > cs 60 96 > > > ds 7b 123 > > > ss 68 104 > > > es 7b 123 > > > fs d8 216 > > > gs e0 224 > > > ********************************** > > > > > > The cs and ds in the kernel space is 60 and 7b. But the kernel define the > > > KERNEL_CS as 60 and the KERNEL_DS as 7b. Where am I wrong? > > > > > > > > > you print CS and DS twice, once during init and once during exit of > > your kernel module. So, which one do you want to confirm? > > > > All in all, I have a guess that you see such number (DS belongs to > > user space in kernel module) because IIRC kernel module loading is > > done using syscall and with the help of modprobe helper. > > > > Thus, it is important to access user space during that stage, hence DS > > still using user space data segment. > > > > > > -- > > regards, > > > > Mulyadi Santosa > > Freelance Linux trainer and consultant > > > > blog: the-hydra.blogspot.com > > training: mulyaditraining.blogspot.com > > > > Hi Mulyadi Santosa > I get the same result during the kernel module init and exit. Then I try > to add a syscall to print these registers, and nothing changed. It is > strange. > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies (Weird, this is the third time, I have to send this. If anybody gets this message multiple times, I apologise but my mail is not in the archives.) If Mulyadi is right and we need DS to be USER_DS to access user space (I really don't know, sorry, but maybe there is something in your <uaccess.h>?) then your attempt to try with a syscall couldn't yield other values because one trait of syscalls is that they can access user space. This means you would get DS = USER_DS precisely _because_ you are in a syscall. Module init and exit are, too, just some stack frames above one and thus fall into this category as well. But shouldn't it be possible to register a timer and then print the segment registers? Timers are fired in softirq context and, hence, have no connection to user space. Regards, Tobi _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies