Pārlūkot izejas kodu

[refcnt] Add ref_init() wrapper function

Standardise on using ref_init() to initialise an embedded reference
count, to match the coding style used by other embedded objects.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 15 gadus atpakaļ
vecāks
revīzija
4bfd5b52c1

+ 1
- 1
src/core/downloader.c Parādīt failu

264
 	downloader = zalloc ( sizeof ( *downloader ) );
264
 	downloader = zalloc ( sizeof ( *downloader ) );
265
 	if ( ! downloader )
265
 	if ( ! downloader )
266
 		return -ENOMEM;
266
 		return -ENOMEM;
267
-	downloader->refcnt.free = downloader_free;
267
+	ref_init ( &downloader->refcnt, downloader_free );
268
 	job_init ( &downloader->job, &downloader_job_operations,
268
 	job_init ( &downloader->job, &downloader_job_operations,
269
 		   &downloader->refcnt );
269
 		   &downloader->refcnt );
270
 	xfer_init ( &downloader->xfer, &downloader_xfer_operations,
270
 	xfer_init ( &downloader->xfer, &downloader_xfer_operations,

+ 1
- 0
src/core/hw.c Parādīt failu

59
 	hw = zalloc ( sizeof ( *hw ) );
59
 	hw = zalloc ( sizeof ( *hw ) );
60
 	if ( ! hw )
60
 	if ( ! hw )
61
 		return -ENOMEM;
61
 		return -ENOMEM;
62
+	ref_init ( &hw->refcnt, NULL );
62
 	xfer_init ( &hw->xfer, &hw_xfer_operations, &hw->refcnt );
63
 	xfer_init ( &hw->xfer, &hw_xfer_operations, &hw->refcnt );
63
 	process_init ( &hw->process, hw_step, &hw->refcnt );
64
 	process_init ( &hw->process, hw_step, &hw->refcnt );
64
 
65
 

+ 1
- 1
src/core/image.c Parādīt failu

64
 
64
 
65
 	image = zalloc ( sizeof ( *image ) );
65
 	image = zalloc ( sizeof ( *image ) );
66
 	if ( image ) {
66
 	if ( image ) {
67
-		image->refcnt.free = free_image;
67
+		ref_init ( &image->refcnt, free_image );
68
 	}
68
 	}
69
 	return image;
69
 	return image;
70
 }
70
 }

+ 1
- 1
src/core/posix_io.c Parādīt failu

198
 	file = zalloc ( sizeof ( *file ) );
198
 	file = zalloc ( sizeof ( *file ) );
199
 	if ( ! file )
199
 	if ( ! file )
200
 		return -ENOMEM;
200
 		return -ENOMEM;
201
-	file->refcnt.free = posix_file_free;
201
+	ref_init ( &file->refcnt, posix_file_free );
202
 	file->fd = fd;
202
 	file->fd = fd;
203
 	file->rc = -EINPROGRESS;
203
 	file->rc = -EINPROGRESS;
204
 	xfer_init ( &file->xfer, &posix_file_xfer_operations,
204
 	xfer_init ( &file->xfer, &posix_file_xfer_operations,

+ 3
- 0
src/core/resolv.c Parādīt failu

121
 	numeric = zalloc ( sizeof ( *numeric ) );
121
 	numeric = zalloc ( sizeof ( *numeric ) );
122
 	if ( ! numeric )
122
 	if ( ! numeric )
123
 		return -ENOMEM;
123
 		return -ENOMEM;
124
+	ref_init ( &numeric->refcnt, NULL );
124
 	resolv_init ( &numeric->resolv, &null_resolv_ops, &numeric->refcnt );
125
 	resolv_init ( &numeric->resolv, &null_resolv_ops, &numeric->refcnt );
125
 	process_init ( &numeric->process, numeric_step, &numeric->refcnt );
126
 	process_init ( &numeric->process, numeric_step, &numeric->refcnt );
126
 	memcpy ( &numeric->sa, sa, sizeof ( numeric->sa ) );
127
 	memcpy ( &numeric->sa, sa, sizeof ( numeric->sa ) );
256
 	mux = zalloc ( sizeof ( *mux ) + name_len );
257
 	mux = zalloc ( sizeof ( *mux ) + name_len );
257
 	if ( ! mux )
258
 	if ( ! mux )
258
 		return -ENOMEM;
259
 		return -ENOMEM;
260
+	ref_init ( &mux->refcnt, NULL );
259
 	resolv_init ( &mux->parent, &null_resolv_ops, &mux->refcnt );
261
 	resolv_init ( &mux->parent, &null_resolv_ops, &mux->refcnt );
260
 	resolv_init ( &mux->child, &resolv_mux_child_ops, &mux->refcnt );
262
 	resolv_init ( &mux->child, &resolv_mux_child_ops, &mux->refcnt );
261
 	mux->resolver = table_start ( RESOLVERS );
263
 	mux->resolver = table_start ( RESOLVERS );
389
 	named = zalloc ( sizeof ( *named ) );
391
 	named = zalloc ( sizeof ( *named ) );
390
 	if ( ! named )
392
 	if ( ! named )
391
 		return -ENOMEM;
393
 		return -ENOMEM;
394
+	ref_init ( &named->refcnt, NULL );
392
 	xfer_init ( &named->xfer, &named_xfer_ops, &named->refcnt );
395
 	xfer_init ( &named->xfer, &named_xfer_ops, &named->refcnt );
393
 	resolv_init ( &named->resolv, &named_resolv_ops, &named->refcnt );
396
 	resolv_init ( &named->resolv, &named_resolv_ops, &named->refcnt );
394
 	named->semantics = semantics;
397
 	named->semantics = semantics;

+ 1
- 0
src/drivers/block/srp.c Parādīt failu

482
 		rc = -ENOMEM;
482
 		rc = -ENOMEM;
483
 		goto err_alloc;
483
 		goto err_alloc;
484
 	}
484
 	}
485
+	ref_init ( &srp->refcnt, NULL );
485
 	xfer_init ( &srp->socket, &srp_xfer_operations, &srp->refcnt );
486
 	xfer_init ( &srp->socket, &srp_xfer_operations, &srp->refcnt );
486
 	srp->transport = transport;
487
 	srp->transport = transport;
487
 	DBGC ( srp, "SRP %p using %s\n", srp, root_path );
488
 	DBGC ( srp, "SRP %p using %s\n", srp, root_path );

+ 1
- 1
src/image/embedded.c Parādīt failu

41
 /* Image structures for all embedded images */
41
 /* Image structures for all embedded images */
42
 #undef EMBED
42
 #undef EMBED
43
 #define EMBED( _index, _path, _name ) {					\
43
 #define EMBED( _index, _path, _name ) {					\
44
-	.refcnt = { .free = embedded_image_free, },			\
44
+	.refcnt = REF_INIT ( embedded_image_free ),			\
45
 	.name = _name,							\
45
 	.name = _name,							\
46
 	.data = ( userptr_t ) ( embedded_image_ ## _index ## _data ),	\
46
 	.data = ( userptr_t ) ( embedded_image_ ## _index ## _data ),	\
47
 	.len = ( size_t ) embedded_image_ ## _index ## _len,		\
47
 	.len = ( size_t ) embedded_image_ ## _index ## _len,		\

+ 35
- 0
src/include/ipxe/refcnt.h Parādīt failu

40
 	void ( * free ) ( struct refcnt *refcnt );
40
 	void ( * free ) ( struct refcnt *refcnt );
41
 };
41
 };
42
 
42
 
43
+/**
44
+ * Initialise a reference counter
45
+ *
46
+ * @v refcnt		Reference counter
47
+ * @v free		Freeing function
48
+ */
49
+static inline __attribute__ (( always_inline )) void
50
+ref_init ( struct refcnt *refcnt,
51
+	   void ( * free ) ( struct refcnt *refcnt ) ) {
52
+	refcnt->free = free;
53
+}
54
+
55
+/**
56
+ * Initialise a reference counter
57
+ *
58
+ * @v refcnt		Reference counter
59
+ * @v free		Free containing object
60
+ */
61
+#define ref_init( refcnt, free ) do {					\
62
+	if ( __builtin_constant_p ( (free) ) && ( (free) == NULL ) ) {	\
63
+		/* Skip common case of no initialisation required */	\
64
+	} else {							\
65
+		ref_init ( (refcnt), (free) );				\
66
+	}								\
67
+	} while ( 0 )
68
+
69
+/**
70
+ * Initialise a static reference counter
71
+ *
72
+ * @v free		Free containing object
73
+ */
74
+#define REF_INIT( free ) {						\
75
+		.free = free,						\
76
+	}
77
+
43
 extern struct refcnt * ref_get ( struct refcnt *refcnt );
78
 extern struct refcnt * ref_get ( struct refcnt *refcnt );
44
 extern void ref_put ( struct refcnt *refcnt );
79
 extern void ref_put ( struct refcnt *refcnt );
45
 
80
 

+ 1
- 1
src/net/aoe.c Parādīt failu

438
 	aoe = zalloc ( sizeof ( *aoe ) );
438
 	aoe = zalloc ( sizeof ( *aoe ) );
439
 	if ( ! aoe )
439
 	if ( ! aoe )
440
 		return -ENOMEM;
440
 		return -ENOMEM;
441
-	aoe->refcnt.free = aoe_free;
441
+	ref_init ( &aoe->refcnt, aoe_free );
442
 	aoe->netdev = netdev_get ( netdev );
442
 	aoe->netdev = netdev_get ( netdev );
443
 	memcpy ( aoe->target, netdev->ll_broadcast, sizeof ( aoe->target ) );
443
 	memcpy ( aoe->target, netdev->ll_broadcast, sizeof ( aoe->target ) );
444
 	aoe->tag = AOE_TAG_MAGIC;
444
 	aoe->tag = AOE_TAG_MAGIC;

+ 1
- 0
src/net/dhcppkt.c Parādīt failu

271
  */
271
  */
272
 void dhcppkt_init ( struct dhcp_packet *dhcppkt, struct dhcphdr *data,
272
 void dhcppkt_init ( struct dhcp_packet *dhcppkt, struct dhcphdr *data,
273
 		    size_t len ) {
273
 		    size_t len ) {
274
+	ref_init ( &dhcppkt->refcnt, NULL );
274
 	dhcppkt->dhcphdr = data;
275
 	dhcppkt->dhcphdr = data;
275
 	dhcppkt->max_len = len;
276
 	dhcppkt->max_len = len;
276
 	dhcpopt_init ( &dhcppkt->options, &dhcppkt->dhcphdr->options,
277
 	dhcpopt_init ( &dhcppkt->options, &dhcppkt->dhcphdr->options,

+ 1
- 0
src/net/infiniband/ib_cmrc.c Parādīt failu

383
 		rc = -ENOMEM;
383
 		rc = -ENOMEM;
384
 		goto err_alloc;
384
 		goto err_alloc;
385
 	}
385
 	}
386
+	ref_init ( &cmrc->refcnt, NULL );
386
 	xfer_init ( &cmrc->xfer, &ib_cmrc_xfer_operations, &cmrc->refcnt );
387
 	xfer_init ( &cmrc->xfer, &ib_cmrc_xfer_operations, &cmrc->refcnt );
387
 	cmrc->ibdev = ibdev;
388
 	cmrc->ibdev = ibdev;
388
 	memcpy ( &cmrc->dgid, dgid, sizeof ( cmrc->dgid ) );
389
 	memcpy ( &cmrc->dgid, dgid, sizeof ( cmrc->dgid ) );

+ 1
- 1
src/net/netdevice.c Parādīt failu

328
 	total_len = ( sizeof ( *netdev ) + priv_size );
328
 	total_len = ( sizeof ( *netdev ) + priv_size );
329
 	netdev = zalloc ( total_len );
329
 	netdev = zalloc ( total_len );
330
 	if ( netdev ) {
330
 	if ( netdev ) {
331
-		netdev->refcnt.free = free_netdev;
331
+		ref_init ( &netdev->refcnt, free_netdev );
332
 		netdev->link_rc = -EUNKNOWN_LINK_STATUS;
332
 		netdev->link_rc = -EUNKNOWN_LINK_STATUS;
333
 		INIT_LIST_HEAD ( &netdev->tx_queue );
333
 		INIT_LIST_HEAD ( &netdev->tx_queue );
334
 		INIT_LIST_HEAD ( &netdev->rx_queue );
334
 		INIT_LIST_HEAD ( &netdev->rx_queue );

+ 1
- 0
src/net/tcp.c Parādīt failu

224
 	if ( ! tcp )
224
 	if ( ! tcp )
225
 		return -ENOMEM;
225
 		return -ENOMEM;
226
 	DBGC ( tcp, "TCP %p allocated\n", tcp );
226
 	DBGC ( tcp, "TCP %p allocated\n", tcp );
227
+	ref_init ( &tcp->refcnt, NULL );
227
 	xfer_init ( &tcp->xfer, &tcp_xfer_operations, &tcp->refcnt );
228
 	xfer_init ( &tcp->xfer, &tcp_xfer_operations, &tcp->refcnt );
228
 	tcp->prev_tcp_state = TCP_CLOSED;
229
 	tcp->prev_tcp_state = TCP_CLOSED;
229
 	tcp->tcp_state = TCP_STATE_SENT ( TCP_SYN );
230
 	tcp->tcp_state = TCP_STATE_SENT ( TCP_SYN );

+ 1
- 1
src/net/tcp/ftp.c Parādīt failu

491
 	ftp = zalloc ( sizeof ( *ftp ) );
491
 	ftp = zalloc ( sizeof ( *ftp ) );
492
 	if ( ! ftp )
492
 	if ( ! ftp )
493
 		return -ENOMEM;
493
 		return -ENOMEM;
494
-	ftp->refcnt.free = ftp_free;
494
+	ref_init ( &ftp->refcnt, ftp_free );
495
 	xfer_init ( &ftp->xfer, &ftp_xfer_operations, &ftp->refcnt );
495
 	xfer_init ( &ftp->xfer, &ftp_xfer_operations, &ftp->refcnt );
496
 	ftp->uri = uri_get ( uri );
496
 	ftp->uri = uri_get ( uri );
497
 	xfer_init ( &ftp->control, &ftp_control_operations, &ftp->refcnt );
497
 	xfer_init ( &ftp->control, &ftp_control_operations, &ftp->refcnt );

+ 1
- 1
src/net/tcp/http.c Parādīt failu

547
 	http = zalloc ( sizeof ( *http ) );
547
 	http = zalloc ( sizeof ( *http ) );
548
 	if ( ! http )
548
 	if ( ! http )
549
 		return -ENOMEM;
549
 		return -ENOMEM;
550
-	http->refcnt.free = http_free;
550
+	ref_init ( &http->refcnt, http_free );
551
 	xfer_init ( &http->xfer, &http_xfer_operations, &http->refcnt );
551
 	xfer_init ( &http->xfer, &http_xfer_operations, &http->refcnt );
552
        	http->uri = uri_get ( uri );
552
        	http->uri = uri_get ( uri );
553
 	xfer_init ( &http->socket, &http_socket_operations, &http->refcnt );
553
 	xfer_init ( &http->socket, &http_socket_operations, &http->refcnt );

+ 1
- 1
src/net/tcp/iscsi.c Parādīt failu

1792
 	iscsi = zalloc ( sizeof ( *iscsi ) );
1792
 	iscsi = zalloc ( sizeof ( *iscsi ) );
1793
 	if ( ! iscsi )
1793
 	if ( ! iscsi )
1794
 		return -ENOMEM;
1794
 		return -ENOMEM;
1795
-	iscsi->refcnt.free = iscsi_free;
1795
+	ref_init ( &iscsi->refcnt, iscsi_free );
1796
 	xfer_init ( &iscsi->socket, &iscsi_socket_operations, &iscsi->refcnt );
1796
 	xfer_init ( &iscsi->socket, &iscsi_socket_operations, &iscsi->refcnt );
1797
 	process_init ( &iscsi->process, iscsi_tx_step, &iscsi->refcnt );
1797
 	process_init ( &iscsi->process, iscsi_tx_step, &iscsi->refcnt );
1798
 
1798
 

+ 1
- 1
src/net/tls.c Parādīt failu

1731
 	if ( ! tls )
1731
 	if ( ! tls )
1732
 		return -ENOMEM;
1732
 		return -ENOMEM;
1733
 	memset ( tls, 0, sizeof ( *tls ) );
1733
 	memset ( tls, 0, sizeof ( *tls ) );
1734
-	tls->refcnt.free = free_tls;
1734
+	ref_init ( &tls->refcnt, free_tls );
1735
 	filter_init ( &tls->plainstream, &tls_plainstream_operations,
1735
 	filter_init ( &tls->plainstream, &tls_plainstream_operations,
1736
 		      &tls->cipherstream, &tls_cipherstream_operations,
1736
 		      &tls->cipherstream, &tls_cipherstream_operations,
1737
 		      &tls->refcnt );
1737
 		      &tls->refcnt );

+ 1
- 0
src/net/udp.c Parādīt failu

110
 	if ( ! udp )
110
 	if ( ! udp )
111
 		return -ENOMEM;
111
 		return -ENOMEM;
112
 	DBGC ( udp, "UDP %p allocated\n", udp );
112
 	DBGC ( udp, "UDP %p allocated\n", udp );
113
+	ref_init ( &udp->refcnt, NULL );
113
 	xfer_init ( &udp->xfer, &udp_xfer_operations, &udp->refcnt );
114
 	xfer_init ( &udp->xfer, &udp_xfer_operations, &udp->refcnt );
114
 	if ( st_peer )
115
 	if ( st_peer )
115
 		memcpy ( &udp->peer, st_peer, sizeof ( udp->peer ) );
116
 		memcpy ( &udp->peer, st_peer, sizeof ( udp->peer ) );

+ 2
- 2
src/net/udp/dhcp.c Parādīt failu

1439
 	dhcp = zalloc ( sizeof ( *dhcp ) );
1439
 	dhcp = zalloc ( sizeof ( *dhcp ) );
1440
 	if ( ! dhcp )
1440
 	if ( ! dhcp )
1441
 		return -ENOMEM;
1441
 		return -ENOMEM;
1442
-	dhcp->refcnt.free = dhcp_free;
1442
+	ref_init ( &dhcp->refcnt, dhcp_free );
1443
 	job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
1443
 	job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
1444
 	xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
1444
 	xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
1445
 	dhcp->netdev = netdev_get ( netdev );
1445
 	dhcp->netdev = netdev_get ( netdev );
1542
 			sizeof ( *ip ) /* terminator */ );
1542
 			sizeof ( *ip ) /* terminator */ );
1543
 	if ( ! dhcp )
1543
 	if ( ! dhcp )
1544
 		return -ENOMEM;
1544
 		return -ENOMEM;
1545
-	dhcp->refcnt.free = dhcp_free;
1545
+	ref_init ( &dhcp->refcnt, dhcp_free );
1546
 	job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
1546
 	job_init ( &dhcp->job, &dhcp_job_operations, &dhcp->refcnt );
1547
 	xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
1547
 	xfer_init ( &dhcp->xfer, &dhcp_xfer_operations, &dhcp->refcnt );
1548
 	dhcp->netdev = netdev_get ( netdev );
1548
 	dhcp->netdev = netdev_get ( netdev );

+ 1
- 0
src/net/udp/dns.c Parādīt failu

503
 		rc = -ENOMEM;
503
 		rc = -ENOMEM;
504
 		goto err_alloc_dns;
504
 		goto err_alloc_dns;
505
 	}
505
 	}
506
+	ref_init ( &dns->refcnt, NULL );
506
 	resolv_init ( &dns->resolv, &null_resolv_ops, &dns->refcnt );
507
 	resolv_init ( &dns->resolv, &null_resolv_ops, &dns->refcnt );
507
 	xfer_init ( &dns->socket, &dns_socket_operations, &dns->refcnt );
508
 	xfer_init ( &dns->socket, &dns_socket_operations, &dns->refcnt );
508
 	dns->timer.expired = dns_timer_expired;
509
 	dns->timer.expired = dns_timer_expired;

+ 1
- 1
src/net/udp/slam.c Parādīt failu

748
 	slam = zalloc ( sizeof ( *slam ) );
748
 	slam = zalloc ( sizeof ( *slam ) );
749
 	if ( ! slam )
749
 	if ( ! slam )
750
 		return -ENOMEM;
750
 		return -ENOMEM;
751
-	slam->refcnt.free = slam_free;
751
+	ref_init ( &slam->refcnt, slam_free );
752
 	xfer_init ( &slam->xfer, &slam_xfer_operations, &slam->refcnt );
752
 	xfer_init ( &slam->xfer, &slam_xfer_operations, &slam->refcnt );
753
 	xfer_init ( &slam->socket, &slam_socket_operations, &slam->refcnt );
753
 	xfer_init ( &slam->socket, &slam_socket_operations, &slam->refcnt );
754
 	xfer_init ( &slam->mc_socket, &slam_mc_socket_operations,
754
 	xfer_init ( &slam->mc_socket, &slam_mc_socket_operations,

+ 1
- 1
src/net/udp/tftp.c Parādīt failu

1134
 	tftp = zalloc ( sizeof ( *tftp ) );
1134
 	tftp = zalloc ( sizeof ( *tftp ) );
1135
 	if ( ! tftp )
1135
 	if ( ! tftp )
1136
 		return -ENOMEM;
1136
 		return -ENOMEM;
1137
-	tftp->refcnt.free = tftp_free;
1137
+	ref_init ( &tftp->refcnt, tftp_free );
1138
 	xfer_init ( &tftp->xfer, &tftp_xfer_operations, &tftp->refcnt );
1138
 	xfer_init ( &tftp->xfer, &tftp_xfer_operations, &tftp->refcnt );
1139
 	tftp->uri = uri_get ( uri );
1139
 	tftp->uri = uri_get ( uri );
1140
 	xfer_init ( &tftp->socket, &tftp_socket_operations, &tftp->refcnt );
1140
 	xfer_init ( &tftp->socket, &tftp_socket_operations, &tftp->refcnt );

Notiek ielāde…
Atcelt
Saglabāt