]> Zhao Yanbai Git Server - minix.git/commitdiff
libsys: add sys_safememset()
authorArne Welzel <arne.welzel@gmail.com>
Sat, 22 Sep 2012 20:02:14 +0000 (20:02 +0000)
committerBen Gras <ben@minix3.org>
Wed, 26 Sep 2012 00:18:00 +0000 (02:18 +0200)
include/minix/com.h
include/minix/syslib.h
lib/libsys/Makefile
lib/libsys/sys_safememset.c [new file with mode: 0644]

index b44dccffa2bba066ab5371c03cc30e0aae2acf96..2ab581de6ef01d565eba41c8f72effb365cb9ffe 100644 (file)
 #define SCP_SEG_OBSOLETE m2_i2 /* my own segment */
 #define SCP_GID                m2_i3   /* grant id */
 #define SCP_OFFSET     m2_l1   /* offset within grant */
-#define        SCP_ADDRESS     m2_p1   /* my own address */
-#define        SCP_BYTES       m2_l2   /* bytes from offset */
+#define SCP_ADDRESS    m2_p1   /* my own address */
+#define SCP_BYTES      m2_l2   /* bytes from offset */
 
 /* SYS_SAFEMEMSET */
 #define SMS_DST                m2_i1   /* dst endpoint */
 #define SMS_GID                m2_i3   /* grant id */
 #define SMS_OFFSET     m2_l1   /* offset within grant */
-#define        SMS_BYTES       m2_l2   /* bytes from offset */
-#define SMS_PATTERN     m2_i2  /* memset() pattern */
+#define SMS_BYTES      m2_l2   /* bytes from offset */
+#define SMS_PATTERN    m2_i2   /* memset() pattern */
 
 /* Field names for SYS_VSAFECOPY* */
 #define VSCP_VEC_ADDR  m2_p1   /* start of vector */
index 7614a0259c7e8d53f32051e543e9428d5e994a2f..ad2c0a4ae5cb79d8ce96ae5ba2dd07417d899d54 100644 (file)
@@ -147,6 +147,9 @@ int sys_safecopyto(endpoint_t dest, cp_grant_id_t grant, vir_bytes
        grant_offset, vir_bytes my_address, size_t bytes);
 int sys_vsafecopy(struct vscp_vec *copyvec, int elements);
 
+int sys_safememset(endpoint_t source, cp_grant_id_t grant, vir_bytes
+       grant_offset, int pattern, size_t bytes);
+
 int sys_memset(endpoint_t who, unsigned long pattern,
        phys_bytes base, phys_bytes bytes);
 
index ff8693eca50db976ca86b853a7a71230314e5857..59670d2e4934c3abd94d6ad9ba7b870e664367c4 100644 (file)
@@ -53,6 +53,7 @@ SRCS=  \
        sys_runctl.c \
        sys_safecopy.c \
        sys_safemap.c \
+       sys_safememset.c \
        sys_schedctl.c \
        sys_schedule.c \
        sys_setalarm.c \
diff --git a/lib/libsys/sys_safememset.c b/lib/libsys/sys_safememset.c
new file mode 100644 (file)
index 0000000..8032a20
--- /dev/null
@@ -0,0 +1,19 @@
+#include "syslib.h"
+
+#include <minix/safecopies.h>
+
+int sys_safememset(endpoint_t dst_e, cp_grant_id_t gr_id,
+       vir_bytes offset, int pattern, size_t len)
+{
+/* memset() a block of data using pattern */
+
+  message copy_mess;
+
+  copy_mess.SMS_DST = dst_e;
+  copy_mess.SMS_GID = gr_id;
+  copy_mess.SMS_OFFSET = (long) offset;
+  copy_mess.SMS_PATTERN = pattern;
+  copy_mess.SMS_BYTES = (long) len;
+
+  return(_kernel_call(SYS_SAFEMEMSET, &copy_mess));
+}