| /*------------------------------------------------------------------------- |
| * |
| * sharedfileset.h |
| * Shared temporary file management. |
| * |
| * |
| * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group |
| * Portions Copyright (c) 1994, Regents of the University of California |
| * |
| * src/include/storage/sharedfileset.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| |
| #ifndef SHAREDFILESET_H |
| #define SHAREDFILESET_H |
| |
| #include "storage/dsm.h" |
| #include "storage/fd.h" |
| #include "storage/spin.h" |
| |
| /* |
| * A set of temporary files that can be shared by multiple backends. |
| */ |
| typedef struct SharedFileSet |
| { |
| pid_t creator_pid; /* PID of the creating process */ |
| uint32 number; /* per-PID identifier */ |
| slock_t mutex; /* mutex protecting the reference count */ |
| int refcnt; /* number of attached backends */ |
| int ntablespaces; /* number of tablespaces to use */ |
| Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that |
| * it's rare that there more than temp |
| * tablespaces. */ |
| } SharedFileSet; |
| |
| extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg); |
| extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg); |
| extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name); |
| extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name, |
| int mode); |
| extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name, |
| bool error_on_failure); |
| extern void SharedFileSetDeleteAll(SharedFileSet *fileset); |
| extern void SharedFileSetUnregister(SharedFileSet *input_fileset); |
| |
| #endif |