patch-2.1.23 linux/include/asm-alpha/uaccess.h
Next file: linux/include/asm-alpha/unistd.h
Previous file: linux/include/asm-alpha/smp_lock.h
Back to the patch index
Back to the overall index
- Lines: 42
- Date:
Sun Jan 26 12:07:46 1997
- Orig file:
v2.1.22/linux/include/asm-alpha/uaccess.h
- Orig date:
Wed Jan 15 19:45:44 1997
diff -u --recursive --new-file v2.1.22/linux/include/asm-alpha/uaccess.h linux/include/asm-alpha/uaccess.h
@@ -71,6 +71,24 @@
__put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
#define __get_user(x,ptr) \
__get_user_nocheck((x),(ptr),sizeof(*(ptr)))
+
+/*
+ * The "xxx_ret" versions return constant specified in third argument, if
+ * something bad happens. These macros can be optimized for the
+ * case of just returning from the function xxx_ret is used.
+ */
+
+#define put_user_ret(x,ptr,ret) ({ \
+if (put_user(x,ptr)) return ret; })
+
+#define get_user_ret(x,ptr,ret) ({ \
+if (get_user(x,ptr)) return ret; })
+
+#define __put_user_ret(x,ptr,ret) ({ \
+if (__put_user(x,ptr)) return ret; })
+
+#define __get_user_ret(x,ptr,ret) ({ \
+if (__get_user(x,ptr)) return ret; })
/*
* The "lda %1, 2b-1b(%0)" bits are magic to get the assembler to
@@ -353,6 +371,16 @@
: "$1","$2","$3","$4","$5","$28","memory"); \
} \
__cu_len; \
+})
+
+#define copy_to_user_ret(to,from,n,retval) ({ \
+if (copy_to_user(to,from,n)) \
+ return retval; \
+})
+
+#define copy_from_user_ret(to,from,n,retval) ({ \
+if (copy_from_user(to,from,n)) \
+ return retval; \
})
extern void __clear_user(void);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov