]>
Commit | Line | Data |
---|---|---|
cc3fa755 UD |
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 |