get_user_byte, get_fs_byte, get_user_word, get_fs_word, get_user_long, get_fs_long, put_user_byte, put_fs_byte, put_user_word, put_fs_word, put_user_long, put_fs_long, __generic_memcpy_tofs, __constant_memcpy_tofs, __generic_memcpy_fromfs, __constant_memcpy_fromfs, memcpy_fromfs, memcpy_tofs --- ユーザ空間から、またはユーザ空間へデータをコピーする
#includestatic inline unsigned char get_user_byte(const char * addr); static inline unsigned char get_fs_byte(const char *addr); static inline unsigned short get_user_word(const short *addr); static inline unsigned short get_fs_word(const short *addr); static inline unsigned long get_user_long(const int *addr); static inline unsigned long get_fs_long(const int *addr); static inline void put_user_byte(char val,char *addr); static inline void put_fs_byte(char val,char *addr); static inline void put_user_word(short val,short * addr); static inline void put_fs_word(short val,short * addr) static inline void put_user_long(unsigned long val,int * addr); static inline void put_fs_long(unsigned long val,int * addr); static inline void __generic_memcpy_tofs(void * dest, const void * src, unsigned long n); static inline void __constant_memcpy_tofs(void * dest, const void * src, unsigned long n); static inline void __generic_memcpy_fromfs(void * dest, const void * src, unsigned long n); static inline void __constant_memcpy_fromfs(void * dest, const void * src, unsigned long n); static inline void memcpy_fromfs(void * dest, const void * src, unsigned long n); static inline void memcpy_tofs(void * dest,const void * src, unsigned long n);
これらはユーザ空間とカーネル空間の間でデータを交換するための、 アーキテクチャ依存関数である。Alphaのようにセグメントがない アーキテクチャの場合は、これらは通常のコピー操作を行う。 i386の場合、これらは異なったセグメント間でコピーするための インライン・アセンブラ関数になっている。この関数の名称は、 ユーザ・セグメントのセグメント・ディスクリプタとして使用 される、i386の fs レジスタから来ている。
linux/include/asm/segment.h
verify_area(9) --- ユーザ空間へ、またはユーザ空間からの読み書きの パーミッションを検査する。
Linus Torvalds