From 317dbfebfda25302d9dc6c69405385ccec5bec70 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 8 Aug 2021 07:37:33 +0000 Subject: [PATCH] moved up the ioctl field in hio_dev_mth_t --- hio/lib/hio.h | 7 +++---- hio/lib/http-cgi.c | 14 +++++++------- hio/lib/http-thr.c | 2 +- hio/lib/http-txt.c | 6 +++--- hio/lib/mar.c | 2 +- hio/lib/pipe.c | 6 ++++-- hio/lib/pro.c | 4 ++-- hio/lib/sck.c | 12 ++++++------ hio/lib/sys.c | 5 ++--- hio/lib/thr.c | 6 ++++-- 10 files changed, 33 insertions(+), 31 deletions(-) diff --git a/hio/lib/hio.h b/hio/lib/hio.h index 002d5b1..3063811 100644 --- a/hio/lib/hio.h +++ b/hio/lib/hio.h @@ -225,6 +225,9 @@ struct hio_dev_mth_t hio_syshnd_t (*getsyshnd) (hio_dev_t* dev); /* mandatory. called in hio_dev_make() after successful make() */ int (*issyshndbroken) (hio_dev_t* dev); /* the device whose underlying system handle can get closed before kill() must implement this */ + /* ------------------------------------------------------------------ */ + int (*ioctl) (hio_dev_t* dev, int cmd, void* arg); + /* ------------------------------------------------------------------ */ /* return -1 on failure, 0 if no data is availble, 1 otherwise. * when returning 1, *len must be sent to the length of data read. @@ -235,10 +238,6 @@ struct hio_dev_mth_t int (*write) (hio_dev_t* dev, const void* data, hio_iolen_t* len, const hio_devaddr_t* dstaddr); int (*writev) (hio_dev_t* dev, const hio_iovec_t* iov, hio_iolen_t* iovcnt, const hio_devaddr_t* dstaddr); int (*sendfile) (hio_dev_t* dev, hio_syshnd_t in_fd, hio_foff_t foff, hio_iolen_t* len); - - /* ------------------------------------------------------------------ */ - int (*ioctl) (hio_dev_t* dev, int cmd, void* arg); - }; struct hio_dev_evcb_t diff --git a/hio/lib/http-cgi.c b/hio/lib/http-cgi.c index 56e0fbc..9fa107f 100644 --- a/hio/lib/http-cgi.c +++ b/hio/lib/http-cgi.c @@ -228,7 +228,7 @@ static HIO_INLINE void cgi_mark_over (cgi_t* cgi, int over_bits) /* how to arrange to delete this cgi object and put the socket back to the normal waiting state??? */ HIO_ASSERT (cgi->htts->hio, cgi->client->rsrc == (hio_svc_htts_rsrc_t*)cgi); -printf ("DETACHING FROM THE MAIN CLIENT RSRC... state -> %p\n", cgi->client->rsrc); +/*printf ("DETACHING FROM THE MAIN CLIENT RSRC... state -> %p\n", cgi->client->rsrc);*/ HIO_SVC_HTTS_RSRC_DETACH (cgi->client->rsrc); /* cgi must not be access from here down as it could have been destroyed */ } @@ -317,7 +317,7 @@ static void cgi_peer_on_close (hio_dev_pro_t* pro, hio_dev_pro_sid_t sid) cgi->peer = HIO_NULL; /* clear this peer from the state */ HIO_ASSERT (hio, cgi_peer->state != HIO_NULL); -printf ("DETACHING FROM CGI PEER DEVICE.....................%p %d\n", cgi_peer->state, (int)cgi_peer->state->rsrc_refcnt); +/*printf ("DETACHING FROM CGI PEER DEVICE.....................%p %d\n", cgi_peer->state, (int)cgi_peer->state->rsrc_refcnt);*/ HIO_SVC_HTTS_RSRC_DETACH (cgi_peer->state); if (cgi->peer_htrd) @@ -326,7 +326,7 @@ printf ("DETACHING FROM CGI PEER DEVICE.....................%p %d\n", cgi_peer * it's safe to detach the extra information attached on the htrd object. */ cgi_peer = hio_htrd_getxtn(cgi->peer_htrd); HIO_ASSERT (hio, cgi_peer->state != HIO_NULL); -printf ("DETACHING FROM CGI PEER HTRD.....................%p %d\n", cgi_peer->state, (int)cgi_peer->state->rsrc_refcnt); +/*printf ("DETACHING FROM CGI PEER HTRD.....................%p %d\n", cgi_peer->state, (int)cgi_peer->state->rsrc_refcnt);*/ HIO_SVC_HTTS_RSRC_DETACH (cgi_peer->state); } @@ -407,7 +407,7 @@ static int cgi_peer_on_read (hio_dev_pro_t* pro, hio_dev_pro_sid_t sid, const vo if (rem > 0) { /* If the script specifies Content-Length and produces longer data, it will come here */ -printf ("AAAAAAAAAAAAAAAAAa EEEEEXcessive DATA..................\n"); +/*printf ("AAAAAAAAAAAAAAAAAa EEEEEXcessive DATA..................\n");*/ /* TODO: or drop this request?? */ } } @@ -472,7 +472,7 @@ static int cgi_peer_htrd_peek (hio_htrd_t* htrd, hio_htre_t* req) if (*endptr == '\0' && is_sober && v > 0 && v <= HIO_TYPE_MAX(int)) status_code = v; } -printf ("CGI PEER HTRD PEEK...\n"); +/*printf ("CGI PEER HTRD PEEK...\n");*/ hio_svc_htts_fmtgmtime (cli->htts, HIO_NULL, dtbuf, HIO_COUNTOF(dtbuf)); if (hio_becs_fmt(cli->sbuf, "HTTP/%d.%d %d %hs\r\nServer: %hs\r\nDate: %hs\r\n", @@ -508,7 +508,7 @@ static int cgi_peer_htrd_poke (hio_htrd_t* htrd, hio_htre_t* req) cgi_peer_xtn_t* cgi_peer = hio_htrd_getxtn(htrd); cgi_t* cgi = cgi_peer->state; -printf (">> PEER RESPONSE COMPLETED\n"); +/*printf (">> PEER RESPONSE COMPLETED\n");*/ if (cgi_write_last_chunk_to_client(cgi) <= -1) return -1; @@ -580,7 +580,7 @@ static int cgi_client_htrd_poke (hio_htrd_t* htrd, hio_htre_t* req) hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(sck); cgi_t* cgi = (cgi_t*)cli->rsrc; -printf (">> CLIENT REQUEST COMPLETED\n"); +/*printf (">> CLIENT REQUEST COMPLETED\n");*/ /* indicate EOF to the client peer */ if (cgi_write_to_peer(cgi, HIO_NULL, 0) <= -1) return -1; diff --git a/hio/lib/http-thr.c b/hio/lib/http-thr.c index 96a0a83..6df6a8f 100644 --- a/hio/lib/http-thr.c +++ b/hio/lib/http-thr.c @@ -407,7 +407,7 @@ static int thr_peer_on_read (hio_dev_thr_t* thr, const void* data, hio_iolen_t d if (rem > 0) { /* If the script specifies Content-Length and produces longer data, it will come here */ -printf ("AAAAAAAAAAAAAAAAAa EEEEEXcessive DATA..................\n"); +/*printf ("AAAAAAAAAAAAAAAAAa EEEEEXcessive DATA..................\n");*/ /* TODO: or drop this request?? */ } } diff --git a/hio/lib/http-txt.c b/hio/lib/http-txt.c index 313ba53..43fc66e 100644 --- a/hio/lib/http-txt.c +++ b/hio/lib/http-txt.c @@ -140,7 +140,7 @@ static HIO_INLINE void txt_mark_over (txt_t* txt, int over_bits) /* how to arrange to delete this txt object and put the socket back to the normal waiting state??? */ HIO_ASSERT (txt->htts->hio, txt->client->rsrc == (hio_svc_htts_rsrc_t*)txt); -printf ("DETACHING FROM THE MAIN CLIENT RSRC... state -> %p\n", txt->client->rsrc); +/*printf ("DETACHING FROM THE MAIN CLIENT RSRC... state -> %p\n", txt->client->rsrc);*/ HIO_SVC_HTTS_RSRC_DETACH (txt->client->rsrc); /* txt must not be access from here down as it could have been destroyed */ } @@ -204,7 +204,7 @@ static int txt_client_htrd_poke (hio_htrd_t* htrd, hio_htre_t* req) hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(sck); txt_t* txt = (txt_t*)cli->rsrc; -printf (">> CLIENT REQUEST COMPLETED\n"); +/*printf (">> CLIENT REQUEST COMPLETED\n");*/ txt_mark_over (txt, TXT_OVER_READ_FROM_CLIENT); return 0; @@ -267,7 +267,7 @@ static int txt_client_on_read (hio_dev_sck_t* sck, const void* buf, hio_iolen_t if (rem > 0) { /* TODO store this to client buffer. once the current resource is completed, arrange to call on_read() with it */ -printf ("UUUUUUUUUUUUUUUUUUUUUUUUUUGGGGGHHHHHHHHHHHH .......... TXT CLIENT GIVING EXCESSIVE DATA AFTER CONTENTS...\n"); +/*printf ("UUUUUUUUUUUUUUUUUUUUUUUUUUGGGGGHHHHHHHHHHHH .......... TXT CLIENT GIVING EXCESSIVE DATA AFTER CONTENTS...\n");*/ } } diff --git a/hio/lib/mar.c b/hio/lib/mar.c index cebe5b5..a7fbbea 100644 --- a/hio/lib/mar.c +++ b/hio/lib/mar.c @@ -355,12 +355,12 @@ static hio_dev_mth_t dev_mar_methods = HIO_NULL, dev_mar_getsyshnd, dev_mar_issyshndbroken, + dev_mar_ioctl, HIO_NULL, HIO_NULL, HIO_NULL, HIO_NULL, /* sendfile */ - dev_mar_ioctl }; /* ========================================================================= */ diff --git a/hio/lib/pipe.c b/hio/lib/pipe.c index e0f7320..0a4cfc9 100644 --- a/hio/lib/pipe.c +++ b/hio/lib/pipe.c @@ -377,11 +377,12 @@ static hio_dev_mth_t dev_pipe_methods = HIO_NULL, dev_pipe_getsyshnd, HIO_NULL, + dev_pipe_ioctl, HIO_NULL, HIO_NULL, HIO_NULL, - dev_pipe_ioctl + HIO_NULL, /* sendfile */ }; static hio_dev_mth_t dev_pipe_methods_slave = @@ -391,11 +392,12 @@ static hio_dev_mth_t dev_pipe_methods_slave = dev_pipe_fail_before_make_slave, dev_pipe_getsyshnd_slave, HIO_NULL, + dev_pipe_ioctl, dev_pipe_read_slave, dev_pipe_write_slave, dev_pipe_writev_slave, - dev_pipe_ioctl + HIO_NULL, /* sendfile */ }; /* ========================================================================= */ diff --git a/hio/lib/pro.c b/hio/lib/pro.c index 67b2934..5e24df7 100644 --- a/hio/lib/pro.c +++ b/hio/lib/pro.c @@ -739,12 +739,12 @@ static hio_dev_mth_t dev_pro_methods = HIO_NULL, dev_pro_getsyshnd, HIO_NULL, + dev_pro_ioctl, HIO_NULL, /* read */ HIO_NULL, /* write */ HIO_NULL, /* writev */ HIO_NULL, /* sendfile */ - dev_pro_ioctl }; static hio_dev_mth_t dev_pro_methods_slave = @@ -754,12 +754,12 @@ static hio_dev_mth_t dev_pro_methods_slave = HIO_NULL, dev_pro_getsyshnd_slave, HIO_NULL, + dev_pro_ioctl, dev_pro_read_slave, dev_pro_write_slave, dev_pro_writev_slave, HIO_NULL, /* sendfile */ - dev_pro_ioctl }; /* ========================================================================= */ diff --git a/hio/lib/sck.c b/hio/lib/sck.c index 56416b1..31f96e5 100644 --- a/hio/lib/sck.c +++ b/hio/lib/sck.c @@ -1531,12 +1531,12 @@ static hio_dev_mth_t dev_mth_sck_stateless = HIO_NULL, dev_sck_getsyshnd, HIO_NULL, + dev_sck_ioctl, /* ioctl */ dev_sck_read_stateless, dev_sck_write_stateless, dev_sck_writev_stateless, HIO_NULL, /* sendfile */ - dev_sck_ioctl, /* ioctl */ }; @@ -1547,12 +1547,12 @@ static hio_dev_mth_t dev_mth_sck_stream = HIO_NULL, dev_sck_getsyshnd, HIO_NULL, + dev_sck_ioctl, /* ioctl */ dev_sck_read_stream, dev_sck_write_stream, dev_sck_writev_stream, dev_sck_sendfile_stream, - dev_sck_ioctl, /* ioctl */ }; static hio_dev_mth_t dev_mth_clisck_stateless = @@ -1562,12 +1562,12 @@ static hio_dev_mth_t dev_mth_clisck_stateless = dev_sck_fail_before_make_client, dev_sck_getsyshnd, HIO_NULL, + dev_sck_ioctl, dev_sck_read_stateless, dev_sck_write_stateless, dev_sck_writev_stateless, HIO_NULL, - dev_sck_ioctl }; static hio_dev_mth_t dev_mth_clisck_stream = @@ -1577,12 +1577,12 @@ static hio_dev_mth_t dev_mth_clisck_stream = dev_sck_fail_before_make_client, dev_sck_getsyshnd, HIO_NULL, + dev_sck_ioctl, dev_sck_read_stream, dev_sck_write_stream, dev_sck_writev_stream, - dev_sck_sendfile_stream, - dev_sck_ioctl + dev_sck_sendfile_stream }; static hio_dev_mth_t dev_mth_sck_bpf = @@ -1592,12 +1592,12 @@ static hio_dev_mth_t dev_mth_sck_bpf = HIO_NULL, dev_sck_getsyshnd, HIO_NULL, + dev_sck_ioctl, /* ioctl */ dev_sck_read_bpf, dev_sck_write_bpf, dev_sck_writev_bpf, HIO_NULL, /* sendfile */ - dev_sck_ioctl, /* ioctl */ }; /* ========================================================================= */ diff --git a/hio/lib/sys.c b/hio/lib/sys.c index ef462f0..3e3ff7c 100644 --- a/hio/lib/sys.c +++ b/hio/lib/sys.c @@ -75,9 +75,10 @@ void hio_sys_fini (hio_t* hio) } -/* TODO: migrate this function */ +/* TODO: migrate these functions */ #include #include + int hio_makesyshndasync (hio_t* hio, hio_syshnd_t hnd) { #if defined(F_GETFL) && defined(F_SETFL) && defined(O_NONBLOCK) @@ -86,7 +87,6 @@ int hio_makesyshndasync (hio_t* hio, hio_syshnd_t hnd) if ((flags = fcntl(hnd, F_GETFL, 0)) <= -1 || fcntl(hnd, F_SETFL, flags | O_NONBLOCK) <= -1) { -printf ("make sysnhd async error (%d) - errno %d\n", hnd, errno); hio_seterrwithsyserr (hio, 0, errno); return -1; } @@ -106,7 +106,6 @@ int hio_makesyshndcloexec (hio_t* hio, hio_syshnd_t hnd) if ((flags = fcntl(hnd, F_GETFD, 0)) <= -1 || fcntl(hnd, F_SETFD, flags | FD_CLOEXEC) <= -1) { -printf ("make sysnhd cloexec error (%d) - errno %d\n", hnd, errno); hio_seterrwithsyserr (hio, 0, errno); return -1; } diff --git a/hio/lib/thr.c b/hio/lib/thr.c index 12f8fd4..4c79513 100644 --- a/hio/lib/thr.c +++ b/hio/lib/thr.c @@ -569,11 +569,12 @@ static hio_dev_mth_t dev_thr_methods = HIO_NULL, dev_thr_getsyshnd, HIO_NULL, + dev_thr_ioctl, HIO_NULL, HIO_NULL, HIO_NULL, - dev_thr_ioctl + HIO_NULL /* sendfile */ }; static hio_dev_mth_t dev_thr_methods_slave = @@ -583,11 +584,12 @@ static hio_dev_mth_t dev_thr_methods_slave = dev_thr_fail_before_make_slave, dev_thr_getsyshnd_slave, HIO_NULL, + dev_thr_ioctl, dev_thr_read_slave, dev_thr_write_slave, dev_thr_writev_slave, - dev_thr_ioctl + HIO_NULL, /* sendfile */ }; /* ========================================================================= */