static inline int access_ok(int type, const void *addr, unsigned long size){
extern unsigned long memory_start, memory_end;
unsigned long val = (unsigned long)addr;
return ((val >= memory_start) && ((val + size) memory_end));
}
其功能是检查用户空间是否合法,它的第一个参数:type,有两种类型:VERIFY_READ和VERIFY_WRITE,前者为可读,后者可写,注意:如果标志为可写(VERIFY_WRITE)时,必然可读!因为可写是可读的超集(%VERIFY_WRITE is a superset of %VERIFY_READ)。