diff options
author | Kozlov Dmitry <xeb@mail.ru> | 2012-05-28 23:09:27 +0400 |
---|---|---|
committer | Kozlov Dmitry <xeb@mail.ru> | 2012-05-28 23:09:27 +0400 |
commit | 9ae4a0151805229face3385e6c966de90c7fec29 (patch) | |
tree | fbe668f826c9b24c8404ad77ebba7728803ebb4b /accel-pppd/fdtrash.c | |
parent | 0a823d8d044f023a8fbe388e1b5235b660c5127b (diff) | |
download | accel-ppp-9ae4a0151805229face3385e6c966de90c7fec29.tar.gz accel-ppp-9ae4a0151805229face3385e6c966de90c7fec29.zip |
implemented delayed fd close (speeds up session termination process)
Diffstat (limited to 'accel-pppd/fdtrash.c')
-rw-r--r-- | accel-pppd/fdtrash.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/accel-pppd/fdtrash.c b/accel-pppd/fdtrash.c new file mode 100644 index 00000000..c43de8d5 --- /dev/null +++ b/accel-pppd/fdtrash.c @@ -0,0 +1,31 @@ +#include <unistd.h> + +#include "triton.h" +#include "fdtrash.h" + +static void fdtrash_close(struct triton_context_t *ctx) +{ + triton_context_unregister(ctx); +} + +struct triton_context_t ctx = { + .close = fdtrash_close, +}; + +static void __close(void *arg) +{ + close((long)arg); +} + +void __export fdtrash_add(long fd) +{ + triton_context_call(&ctx, (triton_event_func)__close, (void *)fd); +} + +static void init() +{ + triton_context_register(&ctx, NULL); + triton_context_wakeup(&ctx); +} + +DEFINE_INIT(10, init); |