]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Refactoring: use designated initializers in resclass initialization
authorIgor Putovny <igor.putovny@nic.cz>
Thu, 5 Mar 2026 18:24:16 +0000 (19:24 +0100)
committerMaria Matejka <mq@ucw.cz>
Wed, 13 May 2026 14:56:30 +0000 (16:56 +0200)
This is a preparatory update to have easier development later,
as we expect to rework resource freeing significantly.

Issue: #373

12 files changed:
filter/f-util.c
lib/event.c
lib/mempool.c
lib/resource.c
lib/resource.h
lib/slab.c
lib/timer.c
nest/locks.c
nest/rt-table.c
proto/bfd/bfd.c
proto/bmp/bmp.c
sysdep/unix/io.c

index 680f2f54e094f34a3463b4c703c501cb7310e4d4..295cde4a0e8fc5ff4eaa09d39191711de7b11a11 100644 (file)
@@ -258,13 +258,11 @@ ca_dump(struct dump_request *dreq, resource *r)
       ca->name, ca->fda->ea_code, ca->fda->type, ca->fda->f_type);
 }
 
-static struct resclass ca_class = {
+static const struct resclass ca_class = {
   .name = "Custom attribute",
   .size = sizeof(struct custom_attribute),
   .free = ca_free,
   .dump = ca_dump,
-  .lookup = NULL,
-  .memsize = NULL,
 };
 
 struct custom_attribute *
index 6f17a61808d5511cd37317d709c02a1565317c54..bb0b4632390a361bbad713d6f1bcc939ed6560c1 100644 (file)
@@ -46,13 +46,11 @@ ev_dump(struct dump_request *dreq, resource *r)
        e->n.next ? "scheduled" : "inactive");
 }
 
-static struct resclass ev_class = {
-  "Event",
-  sizeof(event),
-  (void (*)(resource *)) ev_postpone,
-  ev_dump,
-  NULL,
-  NULL
+static const struct resclass ev_class = {
+  .name = "Event",
+  .size = sizeof(event),
+  .free = (void (*)(resource *)) ev_postpone,
+  .dump = ev_dump,
 };
 
 /**
index 525eee8fc7e21784549bebc78232aef9edae5686..fb2854d8c52d3ff7f884564e5fdf2e50978e524b 100644 (file)
@@ -48,13 +48,13 @@ static void lp_dump(struct dump_request *, resource *);
 static resource *lp_lookup(resource *, unsigned long);
 static struct resmem lp_memsize(resource *r);
 
-static struct resclass lp_class = {
-  "LinPool",
-  sizeof(struct linpool),
-  lp_free,
-  lp_dump,
-  lp_lookup,
-  lp_memsize
+static const struct resclass lp_class = {
+  .name = "LinPool",
+  .size = sizeof(struct linpool),
+  .free = lp_free,
+  .dump = lp_dump,
+  .lookup  = lp_lookup,
+  .memsize = lp_memsize,
 };
 
 /**
index 7d1b6df48dccae7e83de054526b82aaeedf14a80..26e0d7800d1e6f1372720ef5a33040e82975b44c 100644 (file)
@@ -40,13 +40,13 @@ static void pool_free(resource *);
 static resource *pool_lookup(resource *, unsigned long);
 static struct resmem pool_memsize(resource *P);
 
-static struct resclass pool_class = {
-  "Pool",
-  sizeof(pool),
-  pool_free,
-  pool_dump,
-  pool_lookup,
-  pool_memsize
+static const struct resclass pool_class = {
+  .name = "Pool",
+  .size = sizeof(pool),
+  .free = pool_free,
+  .dump = pool_dump,
+  .lookup  = pool_lookup,
+  .memsize = pool_memsize,
 };
 
 pool root_pool;
@@ -246,7 +246,7 @@ rmemsize(void *res)
  * from the @size field of the &resclass.
  */
 void *
-ralloc(pool *p, struct resclass *c)
+ralloc(pool *p, const struct resclass *c)
 {
   resource *r = xmalloc(c->size);
   bzero(r, c->size);
@@ -351,13 +351,13 @@ mbl_memsize(resource *r)
   };
 }
 
-static struct resclass mb_class = {
-  "Memory",
-  0,
-  mbl_free,
-  mbl_debug,
-  mbl_lookup,
-  mbl_memsize
+static const struct resclass mb_class = {
+  .name = "Memory",
+  .size = 0,
+  .free = mbl_free,
+  .dump = mbl_debug,
+  .lookup  = mbl_lookup,
+  .memsize = mbl_memsize,
 };
 
 /**
index 1e8e2d2cedae5ba3409ff53cc21c2774da5b2030..90b45e24eff3c868e28675705f308dbea03f20cf 100644 (file)
@@ -21,7 +21,7 @@ struct resmem {
 
 typedef struct resource {
   node n;                              /* Inside resource pool */
-  struct resclass *class;              /* Resource class */
+  const struct resclass *class;                /* Resource class */
 } resource;
 
 /* Resource class */
@@ -54,7 +54,7 @@ struct resmem rmemsize(void *res);            /* Return size of memory used by the resourc
 void rlookup(unsigned long);           /* Look up address (only for debugging) */
 void rmove(void *, pool *);            /* Move to a different pool */
 
-void *ralloc(pool *, struct resclass *);
+void *ralloc(pool *, const struct resclass *);
 
 extern pool root_pool;
 
index 68b6c4856f366b92971b0edf63fef8af7aa6b5b5..720b519020a47a9d37884b84f8a6785ff4aa8e8c 100644 (file)
@@ -57,13 +57,12 @@ struct slab {
   list objs;
 };
 
-static struct resclass sl_class = {
-  "FakeSlab",
-  sizeof(struct slab),
-  slab_free,
-  slab_dump,
-  NULL,
-  slab_memsize
+static const struct resclass sl_class = {
+  .name = "FakeSlab",
+  .size = sizeof(struct slab),
+  .free = slab_free,
+  .dump = slab_dump,
+  .memsize = slab_memsize,
 };
 
 struct sl_obj {
@@ -183,13 +182,13 @@ struct slab {
   struct sl_head_list empty_heads, partial_heads, full_heads;
 };
 
-static struct resclass sl_class = {
-  "Slab",
-  sizeof(struct slab),
-  slab_free,
-  slab_dump,
-  slab_lookup,
-  slab_memsize
+static const struct resclass sl_class = {
+  .name = "Slab",
+  .size = sizeof(struct slab),
+  .free = slab_free,
+  .dump = slab_dump,
+  .lookup  = slab_lookup,
+  .memsize = slab_memsize,
 };
 
 #define SL_GET_HEAD(x) ((struct sl_head *) (((uintptr_t) (x)) & ~(page_size-1)))
index 3d4303a4976578735685807151c7ea1cb21ed295..1a52f414b7ba149a29d28de974cf81ee4ca2d654 100644 (file)
@@ -118,13 +118,11 @@ tm_dump(struct dump_request *dreq, resource *r)
 }
 
 
-static struct resclass tm_class = {
-  "Timer",
-  sizeof(timer),
-  tm_free,
-  tm_dump,
-  NULL,
-  NULL
+static const struct resclass tm_class = {
+  .name = "Timer",
+  .size = sizeof(timer),
+  .free = tm_free,
+  .dump = tm_dump,
 };
 
 timer *
index 1776852502dd9187a1bef514d85f291629859431..f363143f8fc2e50a45bd09d70da3b4a966e38e73 100644 (file)
@@ -97,13 +97,11 @@ olock_dump(struct dump_request *dreq, resource *r)
     RDUMP(" [wanted]\n");
 }
 
-static struct resclass olock_class = {
-  "ObjLock",
-  sizeof(struct object_lock),
-  olock_free,
-  olock_dump,
-  NULL,
-  NULL,
+static const struct resclass olock_class = {
+  .name = "ObjLock",
+  .size = sizeof(struct object_lock),
+  .free = olock_free,
+  .dump = olock_dump,
 };
 
 /**
index 0cad1aaaab5aec52d962f6172897416576ecbd3d..3ea3c00fa16e000b743fb91ff6c1ce50bfcda384 100644 (file)
@@ -2214,13 +2214,11 @@ rt_res_dump(struct dump_request *dreq, resource *_r)
       r->name, net_label[r->addr_type], r->rt_count, r->use_count);
 }
 
-static struct resclass rt_class = {
+static const struct resclass rt_class = {
   .name = "Routing table",
   .size = sizeof(struct rtable),
   .free = rt_free,
   .dump = rt_res_dump,
-  .lookup = NULL,
-  .memsize = NULL,
 };
 
 rtable *
index b678a0e5bbe03b06e6cf4dd1b656314880386791..c686d7d12ba0aae9326e773fbbc4084c3c80d52a 100644 (file)
@@ -769,7 +769,7 @@ bfd_drop_requests(struct bfd_proto *p)
   HASH_WALK_END;
 }
 
-static struct resclass bfd_request_class;
+static const struct resclass bfd_request_class;
 
 struct bfd_request *
 bfd_request_session(pool *p, ip_addr addr, ip_addr local,
@@ -835,13 +835,11 @@ bfd_request_dump(struct dump_request *dreq, resource *r)
   RDUMP("(code %p, data %p)\n", req->hook, req->data);
 }
 
-static struct resclass bfd_request_class = {
-  "BFD request",
-  sizeof(struct bfd_request),
-  bfd_request_free,
-  bfd_request_dump,
-  NULL,
-  NULL,
+static const struct resclass bfd_request_class = {
+  .name = "BFD request",
+  .size = sizeof(struct bfd_request),
+  .free = bfd_request_free,
+  .dump = bfd_request_dump,
 };
 
 
index ae768a7c9bb20cdeba90eca533a669adab3bfe1f..5f9d5d21a4063f3a1208e846f4973bd81c9c266c 100644 (file)
@@ -250,7 +250,7 @@ bmp_tx_resource_memsize(resource *r)
   };
 }
 
-static struct resclass bmp_tx_resource_class = {
+static const struct resclass bmp_tx_resource_class = {
   .name = "BMP TX buffers",
   .size = sizeof(struct bmp_tx_resource),
   .free = bmp_tx_resource_free,
index 98345d58bdf9eb6523099ac750d1da9925d8134f..d6a31f9b9868d1b32975136880f53c0cb7ce62ec 100644 (file)
@@ -85,13 +85,11 @@ rf_dump(struct dump_request *dreq, resource *r)
   RDUMP("(FILE *%p)\n", a->f);
 }
 
-static struct resclass rf_class = {
-  "FILE",
-  sizeof(struct rfile),
-  rf_free,
-  rf_dump,
-  NULL,
-  NULL
+static const struct resclass rf_class = {
+  .name = "FILE",
+  .size = sizeof(struct rfile),
+  .free = rf_free,
+  .dump = rf_dump,
 };
 
 struct rfile *
@@ -1098,13 +1096,11 @@ sk_dump(struct dump_request *dreq, resource *r)
        s->iface ? s->iface->name : "none");
 }
 
-static struct resclass sk_class = {
-  "Socket",
-  sizeof(sock),
-  sk_free,
-  sk_dump,
-  NULL,
-  NULL
+static const struct resclass sk_class = {
+  .name = "Socket",
+  .size = sizeof(sock),
+  .free = sk_free,
+  .dump = sk_dump,
 };
 
 /**