Как работает copy_to_user на s390? - PullRequest
2 голосов
/ 20 января 2012

В архитектуре s390 виртуальное ядро ​​и пользовательские адресные пространства никогда не присутствуют одновременно, так как же работает copy_to_user?

1 Ответ

3 голосов
/ 20 января 2012

copy_to_user для s390 реализовано здесь: linux / arch / s390 / include / asm / uaceess.h .

uaccess - указатель на copy_ [to / from] _user фактическая реализация.Это установлено здесь (grep uaccess): arch / s390 / kernel / setup.c .Существует 4 реализации uaccess, в зависимости от режима:

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

...