1 /*------------------------------------------------------------------------- 2 * 3 * sharedfileset.h 4 * Shared temporary file management. 5 * 6 * 7 * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/storage/sharedfileset.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 15 #ifndef SHAREDFILESET_H 16 #define SHAREDFILESET_H 17 18 #include "storage/dsm.h" 19 #include "storage/fd.h" 20 #include "storage/spin.h" 21 22 /* 23 * A set of temporary files that can be shared by multiple backends. 24 */ 25 typedef struct SharedFileSet 26 { 27 pid_t creator_pid; /* PID of the creating process */ 28 uint32 number; /* per-PID identifier */ 29 slock_t mutex; /* mutex protecting the reference count */ 30 int refcnt; /* number of attached backends */ 31 int ntablespaces; /* number of tablespaces to use */ 32 Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that 33 * it's rare that there more than temp 34 * tablespaces. */ 35 } SharedFileSet; 36 37 extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg); 38 extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg); 39 extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name); 40 extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name, 41 int mode); 42 extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name, 43 bool error_on_failure); 44 extern void SharedFileSetDeleteAll(SharedFileSet *fileset); 45 extern void SharedFileSetUnregister(SharedFileSet *input_fileset); 46 47 #endif 48