Update from db-2.3.12.
[kopensolaris-gnu/glibc.git] / db2 / include / os_func.h
1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 1997
5  *      Sleepycat Software.  All rights reserved.
6  *
7  *      @(#)os_func.h   10.2 (Sleepycat) 10/28/97
8  */
9
10 /* Calls which can be replaced by the application. */
11 struct __db_jumptab {
12         void   *(*db_calloc) __P((size_t, size_t));     /* DB_FUNC_CALLOC */
13         int     (*db_close) __P((int));                 /* DB_FUNC_CLOSE */
14         void    (*db_dirfree) __P((char **, int));      /* DB_FUNC_DIRFREE */
15         int     (*db_dirlist)                           /* DB_FUNC_DIRLIST */
16                     __P((const char *, char ***, int *));
17         int     (*db_exists)                            /* DB_FUNC_EXISTS */
18                     __P((const char *, int *));
19         void    (*db_free) __P((void *));               /* DB_FUNC_FREE */
20         int     (*db_fsync) __P((int));                 /* DB_FUNC_FSYNC */
21         int     (*db_ioinfo)                            /* DB_FUNC_IOINFO */
22                     __P((const char *, int, off_t *, off_t *));
23         void   *(*db_malloc) __P((size_t));             /* DB_FUNC_MALLOC */
24         int     (*db_map)                               /* DB_FUNC_MAP */
25                     __P((int, size_t, int, int, void **));
26         int     (*db_open)                              /* DB_FUNC_OPEN */
27                     __P((const char *, int, ...));
28         ssize_t (*db_read) __P((int, void *, size_t));  /* DB_FUNC_READ */
29         void   *(*db_realloc) __P((void *, size_t));    /* DB_FUNC_REALLOC */
30         int     (*db_seek)                              /* DB_FUNC_SEEK */
31                     __P((int, size_t, db_pgno_t, u_long, int));
32         int     (*db_sleep) __P((u_long, u_long));      /* DB_FUNC_SLEEP */
33         char   *(*db_strdup) __P((const char *));       /* DB_FUNC_STRDUP */
34         int     (*db_unlink) __P((const char *));       /* DB_FUNC_UNLINK */
35         int     (*db_unmap) __P((void *, size_t));      /* DB_FUNC_UNMAP */
36         ssize_t (*db_write)                             /* DB_FUNC_WRITE */
37                     __P((int, const void *, size_t));
38         int     (*db_yield) __P((void));                /* DB_FUNC_YIELD */
39 };
40
41 extern struct __db_jumptab __db_jump;
42
43 /*
44  * Names used by DB to call through the jump table.
45  *
46  * The naming scheme goes like this: if the functionality the application can
47  * replace is the same as the DB functionality, e.g., calloc, or dirlist, then
48  * we use the name __db_XXX, and the application is expected to replace the
49  * complete functionality, which may or may not map directly to an ANSI C or
50  * POSIX 1003.1 interface.  If the functionality that the aplication replaces
51  * only underlies what the DB os directory exports to other parts of DB, e.g.,
52  * read, then the name __os_XXX is used, and the application can only replace
53  * the underlying functionality.  Under most circumstances, the os directory
54  * part of DB is the only code that should use the __os_XXX names, all other
55  * parts of DB should be calling __db_XXX functions.
56  */
57 #define __db_calloc     __db_jump.db_calloc
58 #define __os_close      __db_jump.db_close      /* __db_close is a wrapper. */
59 #define __db_dirfree    __db_jump.db_dirfree
60 #define __db_dirlist    __db_jump.db_dirlist
61 #define __db_exists     __db_jump.db_exists
62 #define __db_free       __db_jump.db_free
63 #define __os_fsync      __db_jump.db_fsync      /* __db_fsync is a wrapper. */
64 #define __db_ioinfo     __db_jump.db_ioinfo
65 #define __db_malloc     __db_jump.db_malloc
66 #define __db_map        __db_jump.db_map
67 #define __os_open       __db_jump.db_open       /* __db_open is a wrapper. */
68 #define __os_read       __db_jump.db_read       /* __db_read is a wrapper. */
69 #define __db_realloc    __db_jump.db_realloc
70 #define __db_seek       __db_jump.db_seek
71 #define __db_sleep      __db_jump.db_sleep
72 #define __db_strdup     __db_jump.db_strdup
73 #define __os_unlink     __db_jump.db_unlink     /* __db_unlink is a wrapper. */
74 #define __db_unmap      __db_jump.db_unmap
75 #define __os_write      __db_jump.db_write      /* __db_write is a wrapper. */
76 #define __db_yield      __db_jump.db_yield