linux segment
Fan Yang
lljyangfan at gmail.com
Sun Oct 28 10:20:13 EDT 2012
2012/10/28 Fan Yang <lljyangfan at gmail.com>
>
>
> 2012/10/27 Jun Hu <duanshuidao at hotmail.com>
>
>> Can you post out your codes ?
>>
>> *From:* Fan Yang <lljyangfan at gmail.com>
>> *Sent:* Wednesday, October 24, 2012 8:04 PM
>> *To:* kernelnewbies at kernelnewbies.org
>> *Subject:* linux segment
>>
>> Hi all:
>> I print the cs ds and ss register in the user space, and it is same
>> as the __USER_CS and __USER_DS which defined in kernel as 73 and 7b. In the
>> kernel __KERNEL_CS and __KERNEL_DS defined as 60 and 68, but when I print
>> this two value in my kernel module, I get 60 and 7b. Why ? It should be 60
>> and 68, shouldn't it?
>>
>>
>>
>> ------------------------------
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>> Hi Jun Hu
> There is my code which run at the user space:
>
> 1 #include<stdio.h>
> 2 main()
> 3 {
> 4 unsigned long cs, ds, ss, es, fs, gs;
> 5 asm volatile("movl %%CS,%0\n\t":"=r"(cs));
> 6 asm volatile("movl %%DS,%0\n\t":"=r"(ds));
> 7 asm volatile("movl %%SS,%0\n\t":"=r"(ss));
> 8 asm volatile("movl %%ES,%0\n\t":"=r"(es));
>
> 9 asm volatile("movl %%FS,%0\n\t":"=r"(fs));
> 10 asm volatile("movl %%GS,%0\n\t":"=r"(gs));
> 11 printf ("**********************************\n");
> 12 printf ("cs %lx\t%ld\n", cs, cs);
> 13 printf ("ds %lx\t%ld\n", ds, ds);
> 14 printf ("ss %lx\t%ld\n", ss, ss);
> 15 printf ("es %lx\t%ld\n", es, es);
> 16 printf ("fs %lx\t%ld\n", fs, fs);
> 17 printf ("gs %lx\t%ld\n", gs, gs);
> 18 printf ("**********************************\n");
> 19 }
>
>
>
> and the result of the progress in my machine is
>
>
> **********************************
> cs 73 115
> ds 7b 123
> ss 7b 123
> es 7b 123
> fs 0 0
> gs 33 51
> **********************************
>
>
> so, you can see the cs and ds register is 73 and 7b which are same as the
> kernel defined. And the code of the kernel module is
>
>
> 1 #include<linux/init.h>
>
> 2 #include<linux/kernel.h>
> 3 #include<linux/module.h>
> 4
> 5 static void __init print_init (void)
> 6 {
> 7 unsigned long cs, ds, ss, es, fs, gs,currenttime;
> 8 asm volatile("movl %%CS,%0\n\t":"=r"(cs));
> 9 asm volatile("movl %%DS,%0\n\t":"=r"(ds));
> 10 asm volatile("movl %%SS,%0\n\t":"=r"(ss));
> 11 asm volatile("movl %%ES,%0\n\t":"=r"(es));
> 12 asm volatile("movl %%FS,%0\n\t":"=r"(fs));
> 13 asm volatile("movl %%GS,%0\n\t":"=r"(gs));
> 14 printk ("**********************************\n");
> 15 printk ("cs %lx\t%ld\n", cs, cs);
> 16 printk ("ds %lx\t%ld\n", ds, ds);
> 17 printk ("ss %lx\t%ld\n", ss, ss);
> 18 printk ("es %lx\t%ld\n", es, es);
> 19 printk ("fs %lx\t%ld\n", fs, fs);
> 20 printk ("gs %lx\t%ld\n", gs, gs);
> 21 printk ("**********************************\n");
> 22
> 23 }
> 24
> 25 static void __exit print_exit (void)
> 26 {
> 27 unsigned long cs, ds, ss;
> 28 asm volatile("movl %%cs,%0\n\t":"=r"(cs));
> 29 asm volatile("movl %%ds,%0\n\t":"=r"(ds));
> 30 asm volatile("movl %%ss,%0\n\t":"=r"(ss));
> 31
> 32 printk ("**********************************\n");
> 33 printk ("cs %lx\t%ld\n", cs, cs);
> 34 printk ("ds %lx\t%ld\n", ds, ds);
> 35 printk ("ss %lx\t%ld\n", ss, ss);
> 36 printk ("**********************************\n");
> 37 printk ("*****************bye***************\n");
> 38 }
> 39
> 40 module_init (print_init);
> 41 module_exit (print_exit);
>
> 42 MODULE_LICENSE ("GPL");
>
>
> the result of the running this module is
>
> [root at 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?
>
>
> Thanks
> Fan
>
sorry, the kernel define the KERNEL_DS as 68, but I get 7b in my machine.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20121028/1fa6c002/attachment-0001.html
More information about the Kernelnewbies
mailing list