В архитектуре s390 виртуальное ядро и адресные пространства пользователя не присутствуют одновременно, так как работает copy_to_user
?Как работает copy_to_user на s390?
1
A
ответ
2
copy_to_user
для s390 реализован здесь: linux/arch/s390/include/asm/uaceess.h.
uaccess
является указателем на копирование_ [в/из] фактической реализации _user. Он установлен здесь (grep uaccess): arch/s390/kernel/setup.c. Есть 4 реализаций uaccess
, depening из режима:
uaccess_mvcos_switch
, uaccess_pt
, uaccess_mvcos
и uaccess_std
К примеру uaccess_std здесь: http://lxr.linux.no/#linux+v3.2.1/arch/s390/lib/uaccess_std.c
4 * Standard user space access functions based on mvcp/mvcs and doing
5 * interesting things in the secondary space mode.
...
82 size_t copy_to_user_std(size_t size, void __user *ptr, const void *x)
83 {
84 unsigned long tmp1, tmp2;
85
86 tmp1 = -256UL;
87 asm volatile(
88 "0: mvcs 0(%0,%1),0(%2),%3\n"
mvcp
/mvcs
: http://publib.boulder.ibm.com/infocenter/zos/v1r11/topic/com.ibm.zos.r11.ieaa500/iea2a57031.htm
Также здесь: www.tachyonsoft.com/s8139db.pdf – osgx
Спасибо! Таким образом, адресное пространство пользователя и ядра фактически присутствует одновременно (в виде домашнего пространства и основного пространства). – artistoex
Да. Вы просто не можете получить доступ к ядру из не-привилегированного режима. – osgx