|
|
| version 1.4, 2025/04/08 14:39:21 | version 1.8, 2025/04/09 00:43:07 |
|---|---|
| Line 24 | Line 24 |
| * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | * along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
| * | * |
| * $Log$ | * $Log$ |
| * Revision 1.8 2025/04/09 00:43:07 snw | |
| * Exit with fatal error if a header mismatch found | |
| * | |
| * Revision 1.7 2025/04/08 21:41:13 snw | |
| * Make insert, update, and splitp global handler functions take a ptr to a global_handle instead of a file descriptor | |
| * | |
| * Revision 1.6 2025/04/08 20:00:56 snw | |
| * Global handler now uses a header file and maintains the last journaling transaction ID | |
| * | |
| * Revision 1.5 2025/04/08 16:46:11 snw | |
| * Add global file header and offsets | |
| * | |
| * Revision 1.4 2025/04/08 14:39:21 snw | * Revision 1.4 2025/04/08 14:39:21 snw |
| * Initial work on global handler refactor | * Initial work on global handler refactor |
| * | * |
| Line 38 | Line 50 |
| #if !defined(__FREEM_GLOBAL_BLTIN_H) | #if !defined(__FREEM_GLOBAL_BLTIN_H) |
| # define __FREEM_GLOBAL_BLTIN_H | # define __FREEM_GLOBAL_BLTIN_H |
| #include "version.h" | |
| #define GBL_FORMAT_VERSION 2 | |
| #define GBL_MAGIC "FRMGL" | |
| #define GBL_HDR_OK 0 | |
| #define GBL_HDR_NOTOPEN 1 | |
| #define GBL_HDR_BADMAGIC 2 | |
| #define GBL_HDR_BADVERSION 3 | |
| #define GBL_HDR_BADBLOCKSIZE 4 | |
| typedef struct global_header { | |
| char magic[5]; /* FRMGL */ | |
| int format_version; | |
| char host_triplet[40]; | |
| char host_id[256]; | |
| unsigned long block_size; | |
| unsigned long last_transaction_id; | |
| long created; | |
| long last_backup; | |
| } global_header; | |
| typedef struct global_handle { | typedef struct global_handle { |
| int fd; /* file descriptor */ | int fd; /* file descriptor */ |
| global_header header; | |
| long use_count; /* how many times has it been accessed? */ | long use_count; /* how many times has it been accessed? */ |
| long age; | long age; |
| short opened; | short opened; |
| short locked; | short locked; |
| unsigned long last_block; | unsigned long last_block; |
| short fast_path; | short fast_path; |
| char global_name[256]; | char global_name[256]; |
| Line 59 typedef struct global_handle { | Line 99 typedef struct global_handle { |
| extern global_handle *global_handles_head; | extern global_handle *global_handles_head; |
| extern inline long gbl_path(char *key, char *buf); | |
| extern int gbl_lock(global_handle *g, int type); | |
| extern int gbl_unlock(global_handle *g); | |
| extern void gbl_close(global_handle *g); | |
| extern void gbl_close_all(void); | |
| extern int gbl_write_initial_header(global_handle *g); | |
| extern int gbl_write_header(global_handle *g, global_header *hdr); | |
| extern int gbl_read_header(global_handle *g, global_header *h); | |
| extern int gbl_update_tid(global_handle *g); | |
| extern int gbl_create(global_handle *g); | |
| extern short gbl_open(global_handle *g, short action); | |
| extern global_handle *gbl_handle(char *key); | |
| #endif | #endif |