]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/port/lib.h
libc: change usize to 64-bit for amd64 and arm64, make memory(2) functions use usize
[plan9front.git] / sys / src / 9 / port / lib.h
index b72b3ed97164e29fab9c140e1b9b84a31a36a551..ce05634f0ed51d0cb9ccd469ef8cc8f099f36f4e 100644 (file)
@@ -8,11 +8,11 @@
 /*
  * mem routines
  */
-extern void*   memccpy(void*, void*, int, ulong);
-extern void*   memset(void*, int, ulong);
-extern int     memcmp(void*, void*, ulong);
-extern void*   memmove(void*, void*, ulong);
-extern void*   memchr(void*, int, ulong);
+extern void*   memccpy(void*, void*, int, usize);
+extern void*   memset(void*, int, usize);
+extern int     memcmp(void*, void*, usize);
+extern void*   memmove(void*, void*, usize);
+extern void*   memchr(void*, int, usize);
 
 /*
  * string routines
@@ -35,10 +35,11 @@ extern      int     cistrncmp(char*, char*, int);
 
 enum
 {
-       UTFmax          = 3,    /* maximum bytes per rune */
-       Runesync        = 0x80, /* cannot represent part of a UTF sequence */
-       Runeself        = 0x80, /* rune and UTF sequences are the same (<) */
-       Runeerror       = 0x80, /* decoding error in UTF */
+       UTFmax          = 4,            /* maximum bytes per rune */
+       Runesync        = 0x80,         /* cannot represent part of a UTF sequence */
+       Runeself        = 0x80,         /* rune and UTF sequences are the same (<) */
+       Runeerror       = 0xFFFD,       /* decoding error in UTF */
+       Runemax         = 0x10FFFF,     /* 21 bit rune */
 };
 
 /*
@@ -46,11 +47,20 @@ enum
  */
 extern int     runetochar(char*, Rune*);
 extern int     chartorune(Rune*, char*);
+extern char*   utfecpy(char *s1, char *es1, char *s2);
 extern char*   utfrune(char*, long);
 extern int     utflen(char*);
 extern int     utfnlen(char*, long);
 extern int     runelen(long);
 
+/*
+ * random number
+ */
+extern int     rand(void);
+extern int     nrand(int);
+extern long    lrand(void);
+extern long    lnrand(long);
+
 extern int     abs(int);
 
 /*
@@ -85,18 +95,32 @@ extern      int     sprint(char*, char*, ...);
 #pragma        varargck        argpos  snprint         3
 #pragma        varargck        argpos  sprint          2
 
+#pragma        varargck        type    "llb"   vlong
 #pragma        varargck        type    "lld"   vlong
 #pragma        varargck        type    "llx"   vlong
+#pragma        varargck        type    "llb"   uvlong
 #pragma        varargck        type    "lld"   uvlong
 #pragma        varargck        type    "llx"   uvlong
+#pragma        varargck        type    "lb"    long
 #pragma        varargck        type    "ld"    long
 #pragma        varargck        type    "lx"    long
+#pragma        varargck        type    "lb"    ulong
 #pragma        varargck        type    "ld"    ulong
 #pragma        varargck        type    "lx"    ulong
+#pragma varargck       type    "zd"    intptr
+#pragma varargck       type    "zo"    intptr
+#pragma varargck       type    "zx"    intptr
+#pragma varargck       type    "zb"    intptr
+#pragma varargck       type    "zd"    uintptr
+#pragma varargck       type    "zo"    uintptr
+#pragma varargck       type    "zx"    uintptr
+#pragma varargck       type    "zb"    uintptr
+#pragma        varargck        type    "b"     int
 #pragma        varargck        type    "d"     int
 #pragma        varargck        type    "x"     int
 #pragma        varargck        type    "c"     int
 #pragma        varargck        type    "C"     int
+#pragma        varargck        type    "b"     uint
 #pragma        varargck        type    "d"     uint
 #pragma        varargck        type    "x"     uint
 #pragma        varargck        type    "c"     uint
@@ -120,7 +144,7 @@ extern      char*   fmtstrflush(Fmt*);
  * one-of-a-kind
  */
 extern char*   cleanname(char*);
-extern ulong   getcallerpc(void*);
+extern uintptr getcallerpc(void*);
 
 extern long    strtol(char*, char**, int);
 extern ulong   strtoul(char*, char**, int);
@@ -132,6 +156,7 @@ extern      char    end[];
 extern int     getfields(char*, char**, int, int, char*);
 extern int     tokenize(char*, char**, int);
 extern int     dec64(uchar*, int, char*, int);
+extern int     dec16(uchar*, int, char*, int);
 extern int     encodefmt(Fmt*);
 extern void    qsort(void*, long, long, int (*)(void*, void*));
 
@@ -151,7 +176,7 @@ extern      void    qsort(void*, long, long, int (*)(void*, void*));
 #define        ORDWR   2       /* read and write */
 #define        OEXEC   3       /* execute, == read but check execute permission */
 #define        OTRUNC  16      /* or'ed in (except for exec), truncate file first */
-#define        OCEXEC  32      /* or'ed in, close on exec */
+#define        OCEXEC  32      /* or'ed in (per file descriptor), close on exec */
 #define        ORCLOSE 64      /* or'ed in, remove on close */
 #define OEXCL   0x1000 /* or'ed in, exclusive create */