Skip to content

Commit f025bd2

Browse files
committed
Use size_t consistently in dsa.{ch}.
Takeshi Ideriha complained that there is a mixture of Size and size_t in dsa.c and corresponding header. Let's use size_t. Back-patch to 10 where dsa.c landed, to make future back-patching easy. Discussion: https://postgr.es/m/4E72940DA2BF16479384A86D54D0988A6F19ABD9%40G01JPEXMBKW04
1 parent ce9cf8e commit f025bd2

File tree

2 files changed

+53
-53
lines changed

2 files changed

+53
-53
lines changed

src/backend/utils/mmgr/dsa.c

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
* double this size, and so on. Larger segments may be created if necessary
6666
* to satisfy large requests.
6767
*/
68-
#define DSA_INITIAL_SEGMENT_SIZE ((Size) (1 * 1024 * 1024))
68+
#define DSA_INITIAL_SEGMENT_SIZE ((size_t) (1 * 1024 * 1024))
6969

7070
/*
7171
* How many segments to create before we double the segment size. If this is
@@ -98,7 +98,7 @@
9898
#define DSA_OFFSET_BITMASK (((dsa_pointer) 1 << DSA_OFFSET_WIDTH) - 1)
9999

100100
/* The maximum size of a DSM segment. */
101-
#define DSA_MAX_SEGMENT_SIZE ((Size) 1 << DSA_OFFSET_WIDTH)
101+
#define DSA_MAX_SEGMENT_SIZE ((size_t) 1 << DSA_OFFSET_WIDTH)
102102

103103
/* Number of pages (see FPM_PAGE_SIZE) per regular superblock. */
104104
#define DSA_PAGES_PER_SUPERBLOCK 16
@@ -121,7 +121,7 @@
121121
#define DSA_EXTRACT_OFFSET(dp) ((dp) & DSA_OFFSET_BITMASK)
122122

123123
/* The type used for index segment indexes (zero based). */
124-
typedef Size dsa_segment_index;
124+
typedef size_t dsa_segment_index;
125125

126126
/* Sentinel value for dsa_segment_index indicating 'none' or 'end'. */
127127
#define DSA_SEGMENT_INDEX_NONE (~(dsa_segment_index)0)
@@ -153,9 +153,9 @@ typedef struct
153153
/* Sanity check magic value. */
154154
uint32 magic;
155155
/* Total number of pages in this segment (excluding metadata area). */
156-
Size usable_pages;
156+
size_t usable_pages;
157157
/* Total size of this segment in bytes. */
158-
Size size;
158+
size_t size;
159159

160160
/*
161161
* Index of the segment that precedes this one in the same segment bin, or
@@ -169,7 +169,7 @@ typedef struct
169169
*/
170170
dsa_segment_index next;
171171
/* The index of the bin that contains this segment. */
172-
Size bin;
172+
size_t bin;
173173

174174
/*
175175
* A flag raised to indicate that this segment is being returned to the
@@ -197,7 +197,7 @@ typedef struct
197197
dsa_pointer prevspan; /* Previous span. */
198198
dsa_pointer nextspan; /* Next span. */
199199
dsa_pointer start; /* Starting address. */
200-
Size npages; /* Length of span in pages. */
200+
size_t npages; /* Length of span in pages. */
201201
uint16 size_class; /* Size class. */
202202
uint16 ninitialized; /* Maximum number of objects ever allocated. */
203203
uint16 nallocatable; /* Number of objects currently allocatable. */
@@ -308,17 +308,17 @@ typedef struct
308308
/* The object pools for each size class. */
309309
dsa_area_pool pools[DSA_NUM_SIZE_CLASSES];
310310
/* The total size of all active segments. */
311-
Size total_segment_size;
311+
size_t total_segment_size;
312312
/* The maximum total size of backing storage we are allowed. */
313-
Size max_total_segment_size;
313+
size_t max_total_segment_size;
314314
/* Highest used segment index in the history of this area. */
315315
dsa_segment_index high_segment_index;
316316
/* The reference count for this area. */
317317
int refcnt;
318318
/* A flag indicating that this area has been pinned. */
319319
bool pinned;
320320
/* The number of times that segments have been freed. */
321-
Size freed_segment_counter;
321+
size_t freed_segment_counter;
322322
/* The LWLock tranche ID. */
323323
int lwlock_tranche_id;
324324
/* The general lock (protects everything except object pools). */
@@ -371,7 +371,7 @@ struct dsa_area
371371
dsa_segment_index high_segment_index;
372372

373373
/* The last observed freed_segment_counter. */
374-
Size freed_segment_counter;
374+
size_t freed_segment_counter;
375375
};
376376

377377
#define DSA_SPAN_NOTHING_FREE ((uint16) -1)
@@ -382,7 +382,7 @@ struct dsa_area
382382
(segment_map_ptr - &area->segment_maps[0])
383383

384384
static void init_span(dsa_area *area, dsa_pointer span_pointer,
385-
dsa_area_pool *pool, dsa_pointer start, Size npages,
385+
dsa_area_pool *pool, dsa_pointer start, size_t npages,
386386
uint16 size_class);
387387
static bool transfer_first_span(dsa_area *area, dsa_area_pool *pool,
388388
int fromclass, int toclass);
@@ -396,8 +396,8 @@ static void unlink_span(dsa_area *area, dsa_area_span *span);
396396
static void add_span_to_fullness_class(dsa_area *area, dsa_area_span *span,
397397
dsa_pointer span_pointer, int fclass);
398398
static void unlink_segment(dsa_area *area, dsa_segment_map *segment_map);
399-
static dsa_segment_map *get_best_segment(dsa_area *area, Size npages);
400-
static dsa_segment_map *make_new_segment(dsa_area *area, Size requested_pages);
399+
static dsa_segment_map *get_best_segment(dsa_area *area, size_t npages);
400+
static dsa_segment_map *make_new_segment(dsa_area *area, size_t requested_pages);
401401
static dsa_area *create_internal(void *place, size_t size,
402402
int tranche_id,
403403
dsm_handle control_handle,
@@ -662,7 +662,7 @@ dsa_pin_mapping(dsa_area *area)
662662
* flags.
663663
*/
664664
dsa_pointer
665-
dsa_allocate_extended(dsa_area *area, Size size, int flags)
665+
dsa_allocate_extended(dsa_area *area, size_t size, int flags)
666666
{
667667
uint16 size_class;
668668
dsa_pointer start_pointer;
@@ -685,8 +685,8 @@ dsa_allocate_extended(dsa_area *area, Size size, int flags)
685685
*/
686686
if (size > dsa_size_classes[lengthof(dsa_size_classes) - 1])
687687
{
688-
Size npages = fpm_size_to_pages(size);
689-
Size first_page;
688+
size_t npages = fpm_size_to_pages(size);
689+
size_t first_page;
690690
dsa_pointer span_pointer;
691691
dsa_area_pool *pool = &area->control->pools[DSA_SCLASS_SPAN_LARGE];
692692

@@ -818,7 +818,7 @@ dsa_free(dsa_area *area, dsa_pointer dp)
818818
dsa_area_span *span;
819819
char *superblock;
820820
char *object;
821-
Size size;
821+
size_t size;
822822
int size_class;
823823

824824
/* Make sure we don't have a stale segment in the slot 'dp' refers to. */
@@ -925,7 +925,7 @@ void *
925925
dsa_get_address(dsa_area *area, dsa_pointer dp)
926926
{
927927
dsa_segment_index index;
928-
Size offset;
928+
size_t offset;
929929

930930
/* Convert InvalidDsaPointer to NULL. */
931931
if (!DsaPointerIsValid(dp))
@@ -998,7 +998,7 @@ dsa_unpin(dsa_area *area)
998998
* backends that have attached to them.
999999
*/
10001000
void
1001-
dsa_set_size_limit(dsa_area *area, Size limit)
1001+
dsa_set_size_limit(dsa_area *area, size_t limit)
10021002
{
10031003
LWLockAcquire(DSA_AREA_LOCK(area), LW_EXCLUSIVE);
10041004
area->control->max_total_segment_size = limit;
@@ -1057,7 +1057,7 @@ dsa_trim(dsa_area *area)
10571057
void
10581058
dsa_dump(dsa_area *area)
10591059
{
1060-
Size i,
1060+
size_t i,
10611061
j;
10621062

10631063
/*
@@ -1158,10 +1158,10 @@ dsa_dump(dsa_area *area)
11581158
* Return the smallest size that you can successfully provide to
11591159
* dsa_create_in_place.
11601160
*/
1161-
Size
1161+
size_t
11621162
dsa_minimum_size(void)
11631163
{
1164-
Size size;
1164+
size_t size;
11651165
int pages = 0;
11661166

11671167
size = MAXALIGN(sizeof(dsa_area_control)) +
@@ -1189,9 +1189,9 @@ create_internal(void *place, size_t size,
11891189
dsa_area_control *control;
11901190
dsa_area *area;
11911191
dsa_segment_map *segment_map;
1192-
Size usable_pages;
1193-
Size total_pages;
1194-
Size metadata_bytes;
1192+
size_t usable_pages;
1193+
size_t total_pages;
1194+
size_t metadata_bytes;
11951195
int i;
11961196

11971197
/* Sanity check on the space we have to work in. */
@@ -1224,7 +1224,7 @@ create_internal(void *place, size_t size,
12241224
control->segment_header.freed = false;
12251225
control->segment_header.size = DSA_INITIAL_SEGMENT_SIZE;
12261226
control->handle = control_handle;
1227-
control->max_total_segment_size = (Size) -1;
1227+
control->max_total_segment_size = (size_t) -1;
12281228
control->total_segment_size = size;
12291229
memset(&control->segment_handles[0], 0,
12301230
sizeof(dsm_handle) * DSA_MAX_SEGMENTS);
@@ -1337,11 +1337,11 @@ attach_internal(void *place, dsm_segment *segment, dsa_handle handle)
13371337
static void
13381338
init_span(dsa_area *area,
13391339
dsa_pointer span_pointer,
1340-
dsa_area_pool *pool, dsa_pointer start, Size npages,
1340+
dsa_area_pool *pool, dsa_pointer start, size_t npages,
13411341
uint16 size_class)
13421342
{
13431343
dsa_area_span *span = dsa_get_address(area, span_pointer);
1344-
Size obsize = dsa_size_classes[size_class];
1344+
size_t obsize = dsa_size_classes[size_class];
13451345

13461346
/*
13471347
* The per-pool lock must be held because we manipulate the span list for
@@ -1437,7 +1437,7 @@ alloc_object(dsa_area *area, int size_class)
14371437
dsa_pointer block;
14381438
dsa_pointer result;
14391439
char *object;
1440-
Size size;
1440+
size_t size;
14411441

14421442
/*
14431443
* Even though ensure_active_superblock can in turn call alloc_object if
@@ -1523,12 +1523,12 @@ ensure_active_superblock(dsa_area *area, dsa_area_pool *pool,
15231523
{
15241524
dsa_pointer span_pointer;
15251525
dsa_pointer start_pointer;
1526-
Size obsize = dsa_size_classes[size_class];
1527-
Size nmax;
1526+
size_t obsize = dsa_size_classes[size_class];
1527+
size_t nmax;
15281528
int fclass;
1529-
Size npages = 1;
1530-
Size first_page;
1531-
Size i;
1529+
size_t npages = 1;
1530+
size_t first_page;
1531+
size_t i;
15321532
dsa_segment_map *segment_map;
15331533

15341534
Assert(LWLockHeldByMe(DSA_SCLASS_LOCK(area, size_class)));
@@ -1959,9 +1959,9 @@ unlink_segment(dsa_area *area, dsa_segment_map *segment_map)
19591959
* pages map.
19601960
*/
19611961
static dsa_segment_map *
1962-
get_best_segment(dsa_area *area, Size npages)
1962+
get_best_segment(dsa_area *area, size_t npages)
19631963
{
1964-
Size bin;
1964+
size_t bin;
19651965

19661966
Assert(LWLockHeldByMe(DSA_AREA_LOCK(area)));
19671967
check_for_freed_segments_locked(area);
@@ -1978,7 +1978,7 @@ get_best_segment(dsa_area *area, Size npages)
19781978
* The minimum contiguous size that any segment in this bin should
19791979
* have. We'll re-bin if we see segments with fewer.
19801980
*/
1981-
Size threshold = (Size) 1 << (bin - 1);
1981+
size_t threshold = (size_t) 1 << (bin - 1);
19821982
dsa_segment_index segment_index;
19831983

19841984
/* Search this bin for a segment with enough contiguous space. */
@@ -1987,7 +1987,7 @@ get_best_segment(dsa_area *area, Size npages)
19871987
{
19881988
dsa_segment_map *segment_map;
19891989
dsa_segment_index next_segment_index;
1990-
Size contiguous_pages;
1990+
size_t contiguous_pages;
19911991

19921992
segment_map = get_segment_by_index(area, segment_index);
19931993
next_segment_index = segment_map->header->next;
@@ -2003,7 +2003,7 @@ get_best_segment(dsa_area *area, Size npages)
20032003
/* Re-bin it if it's no longer in the appropriate bin. */
20042004
if (contiguous_pages < threshold)
20052005
{
2006-
Size new_bin;
2006+
size_t new_bin;
20072007

20082008
new_bin = contiguous_pages_to_segment_bin(contiguous_pages);
20092009

@@ -2051,13 +2051,13 @@ get_best_segment(dsa_area *area, Size npages)
20512051
* segments would be exceeded.
20522052
*/
20532053
static dsa_segment_map *
2054-
make_new_segment(dsa_area *area, Size requested_pages)
2054+
make_new_segment(dsa_area *area, size_t requested_pages)
20552055
{
20562056
dsa_segment_index new_index;
2057-
Size metadata_bytes;
2058-
Size total_size;
2059-
Size total_pages;
2060-
Size usable_pages;
2057+
size_t metadata_bytes;
2058+
size_t total_size;
2059+
size_t total_pages;
2060+
size_t usable_pages;
20612061
dsa_segment_map *segment_map;
20622062
dsm_segment *segment;
20632063

@@ -2095,7 +2095,7 @@ make_new_segment(dsa_area *area, Size requested_pages)
20952095
* pages we can fit.
20962096
*/
20972097
total_size = DSA_INITIAL_SEGMENT_SIZE *
2098-
((Size) 1 << (new_index / DSA_NUM_SEGMENTS_AT_EACH_SIZE));
2098+
((size_t) 1 << (new_index / DSA_NUM_SEGMENTS_AT_EACH_SIZE));
20992099
total_size = Min(total_size, DSA_MAX_SEGMENT_SIZE);
21002100
total_size = Min(total_size,
21012101
area->control->max_total_segment_size -
@@ -2222,7 +2222,7 @@ make_new_segment(dsa_area *area, Size requested_pages)
22222222
static void
22232223
check_for_freed_segments(dsa_area *area)
22242224
{
2225-
Size freed_segment_counter;
2225+
size_t freed_segment_counter;
22262226

22272227
/*
22282228
* Any other process that has freed a segment has incremented
@@ -2258,7 +2258,7 @@ check_for_freed_segments(dsa_area *area)
22582258
static void
22592259
check_for_freed_segments_locked(dsa_area *area)
22602260
{
2261-
Size freed_segment_counter;
2261+
size_t freed_segment_counter;
22622262
int i;
22632263

22642264
Assert(LWLockHeldByMe(DSA_AREA_LOCK(area)));

src/include/utils/dsa.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ struct dsa_area;
2222
typedef struct dsa_area dsa_area;
2323

2424
/*
25-
* If this system only uses a 32-bit value for Size, then use the 32-bit
25+
* If this system only uses a 32-bit value for size_t, then use the 32-bit
2626
* implementation of DSA. This limits the amount of DSA that can be created
2727
* to something significantly less than the entire 4GB address space because
2828
* the DSA pointer must encode both a segment identifier and an offset, but
@@ -102,7 +102,7 @@ typedef dsm_handle dsa_handle;
102102
extern void dsa_startup(void);
103103

104104
extern dsa_area *dsa_create(int tranche_id);
105-
extern dsa_area *dsa_create_in_place(void *place, Size size,
105+
extern dsa_area *dsa_create_in_place(void *place, size_t size,
106106
int tranche_id, dsm_segment *segment);
107107
extern dsa_area *dsa_attach(dsa_handle handle);
108108
extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment);
@@ -113,10 +113,10 @@ extern void dsa_pin_mapping(dsa_area *area);
113113
extern void dsa_detach(dsa_area *area);
114114
extern void dsa_pin(dsa_area *area);
115115
extern void dsa_unpin(dsa_area *area);
116-
extern void dsa_set_size_limit(dsa_area *area, Size limit);
117-
extern Size dsa_minimum_size(void);
116+
extern void dsa_set_size_limit(dsa_area *area, size_t limit);
117+
extern size_t dsa_minimum_size(void);
118118
extern dsa_handle dsa_get_handle(dsa_area *area);
119-
extern dsa_pointer dsa_allocate_extended(dsa_area *area, Size size, int flags);
119+
extern dsa_pointer dsa_allocate_extended(dsa_area *area, size_t size, int flags);
120120
extern void dsa_free(dsa_area *area, dsa_pointer dp);
121121
extern void *dsa_get_address(dsa_area *area, dsa_pointer dp);
122122
extern void dsa_trim(dsa_area *area);

0 commit comments

Comments
 (0)