17
17
#include "storage/lwlock.h"
18
18
#include "storage/shmem.h"
19
19
20
- typedef struct TdeSharedState
21
- {
22
- void * rawDsaArea ; /* DSA area pointer to store cache hashes */
23
- } TdeSharedState ;
24
-
25
20
static void tde_shmem_shutdown (int code , Datum arg );
26
21
27
22
List * registeredShmemRequests = NIL ;
@@ -47,7 +42,6 @@ TdeRequiredSharedMemorySize(void)
47
42
if (routine -> required_shared_mem_size )
48
43
sz = add_size (sz , routine -> required_shared_mem_size ());
49
44
}
50
- sz = add_size (sz , sizeof (TdeSharedState ));
51
45
return MAXALIGN (sz );
52
46
}
53
47
61
55
TdeShmemInit (void )
62
56
{
63
57
bool found ;
64
- TdeSharedState * tdeState ;
58
+ char * free_start ;
65
59
Size required_shmem_size = TdeRequiredSharedMemorySize ();
66
60
67
61
LWLockAcquire (AddinShmemInitLock , LW_EXCLUSIVE );
68
62
/* Create or attach to the shared memory state */
69
63
ereport (NOTICE , errmsg ("TdeShmemInit: requested %ld bytes" , required_shmem_size ));
70
- tdeState = ShmemInitStruct ("pg_tde" , required_shmem_size , & found );
64
+ free_start = ShmemInitStruct ("pg_tde" , required_shmem_size , & found );
71
65
72
66
if (!found )
73
67
{
74
68
/* First time through ... */
75
- char * p = (char * ) tdeState ;
76
69
dsa_area * dsa ;
77
70
ListCell * lc ;
78
71
Size used_size = 0 ;
79
72
Size dsa_area_size ;
80
73
81
- p += MAXALIGN (sizeof (TdeSharedState ));
82
- used_size += MAXALIGN (sizeof (TdeSharedState ));
83
74
/* Now place all shared state structures */
84
75
foreach (lc , registeredShmemRequests )
85
76
{
@@ -88,19 +79,18 @@ TdeShmemInit(void)
88
79
89
80
if (routine -> init_shared_state )
90
81
{
91
- sz = routine -> init_shared_state (p );
82
+ sz = routine -> init_shared_state (free_start );
92
83
used_size += MAXALIGN (sz );
93
- p += MAXALIGN (sz );
84
+ free_start += MAXALIGN (sz );
94
85
Assert (used_size <= required_shmem_size );
95
86
}
96
87
}
97
88
/* Create DSA area */
98
89
dsa_area_size = required_shmem_size - used_size ;
99
90
Assert (dsa_area_size > 0 );
100
- tdeState -> rawDsaArea = p ;
101
91
102
92
ereport (LOG , errmsg ("creating DSA area of size %lu" , dsa_area_size ));
103
- dsa = dsa_create_in_place (tdeState -> rawDsaArea ,
93
+ dsa = dsa_create_in_place (free_start ,
104
94
dsa_area_size ,
105
95
LWLockNewTrancheId (), 0 );
106
96
dsa_pin (dsa );
@@ -112,7 +102,7 @@ TdeShmemInit(void)
112
102
TDEShmemSetupRoutine * routine = (TDEShmemSetupRoutine * ) lfirst (lc );
113
103
114
104
if (routine -> init_dsa_area_objects )
115
- routine -> init_dsa_area_objects (dsa , tdeState -> rawDsaArea );
105
+ routine -> init_dsa_area_objects (dsa , free_start );
116
106
}
117
107
ereport (LOG , errmsg ("setting no limit to DSA area of size %lu" , dsa_area_size ));
118
108
0 commit comments