CommIO.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 05 Disk I/O pipe manager */
10 
11 #include "squid.h"
12 #include "comm/Loops.h"
13 #include "compat/pipe.h"
15 #include "fd.h"
16 #include "globals.h"
17 #include "win32.h"
18 
19 void
21 {
23  return;
24 
25  /* Initialize done pipe signal */
26  int DonePipe[2];
27  if (pipe(DonePipe)) {}
28  DoneFD = DonePipe[1];
29  DoneReadFD = DonePipe[0];
30  fd_open(DoneReadFD, FD_PIPE, "async-io completion event: main");
31  fd_open(DoneFD, FD_PIPE, "async-io completion event: threads");
35  Initialized = true;
36 }
37 
38 void
40 {
41  /* Close done pipe signal */
42  FlushPipe();
43  close(DoneFD);
44  close(DoneReadFD);
47  Initialized = false;
48 }
49 
50 bool CommIO::Initialized = false;
51 bool CommIO::DoneSignalled = false;
52 int CommIO::DoneFD = -1;
53 int CommIO::DoneReadFD = -1;
54 
55 void
57 {
58  char buf[256];
59  FD_READ_METHOD(DoneReadFD, buf, sizeof(buf));
60 }
61 
62 void
63 CommIO::NULLFDHandler(int fd, void *)
64 {
65  FlushPipe();
67 }
68 
69 void
71 {
72  if (DoneSignalled) {
73  FlushPipe();
74  DoneSignalled = false;
75  }
76 }
77 
static void FlushPipe()
Definition: CommIO.cc:56
static bool DoneSignalled
Definition: CommIO.h:29
static bool Initialized
Definition: CommIO.h:28
int commSetNonBlocking(int fd)
Definition: comm.cc:1041
static void ResetNotifications()
Definition: CommIO.cc:70
void fd_open(const int fd, unsigned int, const char *description)
Definition: minimal.cc:15
static void NotifyIOClose()
Definition: CommIO.cc:39
static int DoneReadFD
Definition: CommIO.h:31
#define COMM_SELECT_READ
Definition: defines.h:24
static int DoneFD
Definition: CommIO.h:30
int FD_READ_METHOD(int fd, char *buf, int len)
Definition: fde.h:194
void SetSelect(int, unsigned int, PF *, void *, time_t)
Mark an FD to be watched for its IO status.
Definition: ModDevPoll.cc:220
static void Initialize()
Definition: CommIO.cc:20
void fd_close(const int fd)
Definition: minimal.cc:21
@ FD_PIPE
Definition: enums.h:17
static void NULLFDHandler(int, void *)
Definition: CommIO.cc:63

 

Introduction

Documentation

Support

Miscellaneous