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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy