MINOR: xprt/mux: export all *_io_cb functions so that "show fd" resolves them

In FD dumps it's often very important to figure what upper layer function
is going to be called. Let's export the few I/O callbacks that appear as
tasklet functions so that "show fd" can resolve them instead of printing
a pointer relative to main. For example:

   1028 : st=0x21(R:rA W:Ra) ev=0x01(heopI) [lc] tmask=0x2 umask=0x2 owner=0x7f00b889b200 iocb=0x65b638(sock_conn_iocb) back=0 cflg=0x00001300 fe=recv mux=H2 ctx=0x7f00c8824de0 h2c.st0=FRH .err=0 .maxid=795 .lastid=-1 .flg=0x0000 .nbst=0 .nbcs=0 .fctl_cnt=0 .send_cnt=0 .tree_cnt=0 .orph_cnt=0 .sub=1 .dsi=795 .dbuf=0@(nil)+0/0 .msi=-1 .mbuf=[1..1|32],h=[0@(nil)+0/0],t=[0@(nil)+0/0] xprt=SSL xprt_ctx=0x7f00c86d0750 xctx.st=0 .xprt=RAW .wait.ev=1 .subs=0x7f00c88252e0(ev=1 tl=0x7f00a07d1aa0 tl.calls=1047 tl.ctx=0x7f00c8824de0 tl.fct=h2_io_cb) .sent_early=0 .early_in=0

(cherry picked from commit 691d503896f2dc4944782cfe989fc8b44d66a6c0)
[wt: context adjustments; dropped quic]
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/mux_fcgi.c b/src/mux_fcgi.c
index 46c77cb..afc6423 100644
--- a/src/mux_fcgi.c
+++ b/src/mux_fcgi.c
@@ -353,7 +353,8 @@
 
 static struct task *fcgi_timeout_task(struct task *t, void *context, unsigned short state);
 static int fcgi_process(struct fcgi_conn *fconn);
-static struct task *fcgi_io_cb(struct task *t, void *ctx, unsigned short state);
+/* fcgi_io_cb is exported to see it resolved in "show fd" */
+struct task *fcgi_io_cb(struct task *t, void *ctx, unsigned short state);
 static inline struct fcgi_strm *fcgi_conn_st_by_id(struct fcgi_conn *fconn, int id);
 static struct task *fcgi_deferred_shut(struct task *t, void *ctx, unsigned short state);
 static struct fcgi_strm *fcgi_conn_stream_new(struct fcgi_conn *fconn, struct conn_stream *cs, struct session *sess);
@@ -2926,7 +2927,7 @@
 }
 
 /* this is the tasklet referenced in fconn->wait_event.tasklet */
-static struct task *fcgi_io_cb(struct task *t, void *ctx, unsigned short status)
+struct task *fcgi_io_cb(struct task *t, void *ctx, unsigned short status)
 {
 	struct connection *conn;
 	struct fcgi_conn *fconn;
diff --git a/src/mux_h1.c b/src/mux_h1.c
index 80af533..aee86c9 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -2264,7 +2264,7 @@
 	return -1;
 }
 
-static struct task *h1_io_cb(struct task *t, void *ctx, unsigned short status)
+struct task *h1_io_cb(struct task *t, void *ctx, unsigned short status)
 {
 	struct connection *conn;
 	struct tasklet *tl = (struct tasklet *)t;
diff --git a/src/mux_h2.c b/src/mux_h2.c
index f9b0805..084cac5 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -547,7 +547,8 @@
 static int h2_send(struct h2c *h2c);
 static int h2_recv(struct h2c *h2c);
 static int h2_process(struct h2c *h2c);
-static struct task *h2_io_cb(struct task *t, void *ctx, unsigned short state);
+/* h2_io_cb is exported to see it resolved in "show fd" */
+struct task *h2_io_cb(struct task *t, void *ctx, unsigned short state);
 static inline struct h2s *h2c_st_by_id(struct h2c *h2c, int id);
 static int h2c_decode_headers(struct h2c *h2c, struct buffer *rxbuf, uint32_t *flags, unsigned long long *body_len);
 static int h2_frt_transfer_data(struct h2s *h2s);
@@ -3703,7 +3704,7 @@
 }
 
 /* this is the tasklet referenced in h2c->wait_event.tasklet */
-static struct task *h2_io_cb(struct task *t, void *ctx, unsigned short status)
+struct task *h2_io_cb(struct task *t, void *ctx, unsigned short status)
 {
 	struct connection *conn;
 	struct tasklet *tl = (struct tasklet *)t;
diff --git a/src/mux_pt.c b/src/mux_pt.c
index 57c1b9e..9981ba8 100644
--- a/src/mux_pt.c
+++ b/src/mux_pt.c
@@ -53,8 +53,10 @@
 	}
 }
 
-/* Callback, used when we get I/Os while in idle mode */
-static struct task *mux_pt_io_cb(struct task *t, void *tctx, unsigned short status)
+/* Callback, used when we get I/Os while in idle mode. This one is exported so
+ * that "show fd" can resolve it.
+ */
+struct task *mux_pt_io_cb(struct task *t, void *tctx, unsigned short status)
 {
 	struct mux_pt_ctx *ctx = tctx;
 
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index e42f647..4b4ab21 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -140,6 +140,10 @@
 DECLARE_STATIC_POOL(ssl_sock_ctx_pool, "ssl_sock_ctx_pool", sizeof(struct ssl_sock_ctx));
 
 static struct task *ssl_sock_io_cb(struct task *, void *, unsigned short);
+
+/* ssl_sock_io_cb is exported to see it resolved in "show fd" */
+struct task *ssl_sock_io_cb(struct task *, void *, unsigned short);
+
 static int ssl_sock_handshake(struct connection *conn, unsigned int flag);
 
 /* Methods to implement OpenSSL BIO */
@@ -5470,7 +5474,7 @@
 	return (ctx->xprt->remove_xprt(conn, ctx->xprt_ctx, toremove_ctx, newops, newctx));
 }
 
-static struct task *ssl_sock_io_cb(struct task *t, void *context, unsigned short state)
+struct task *ssl_sock_io_cb(struct task *t, void *context, unsigned short state)
 {
 	struct tasklet *tl = (struct tasklet *)t;
 	struct ssl_sock_ctx *ctx = context;
diff --git a/src/xprt_handshake.c b/src/xprt_handshake.c
index 752a4f3..15e2a8f 100644
--- a/src/xprt_handshake.c
+++ b/src/xprt_handshake.c
@@ -36,7 +36,8 @@
 	return 0;
 }
 
-static struct task *xprt_handshake_io_cb(struct task *t, void *bctx, unsigned short state)
+/* xprt_handshake_io_cb is exported to see it resolved in "show fd" */
+struct task *xprt_handshake_io_cb(struct task *t, void *bctx, unsigned short state)
 {
 	struct xprt_handshake_ctx *ctx = bctx;
 	struct connection *conn = ctx->conn;