summaryrefslogtreecommitdiffstats
path: root/rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c
diff options
context:
space:
mode:
authorhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
committerhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
commitc0b7206652b2852bc574694e7ba07ba1c2acdc00 (patch)
tree5cb95cb0e19e03610525903df46279df2c3b7eb1 /rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c
parentb6d3d6e668b793220f2d3af1bc3e828553dc3fe6 (diff)
delete app
Change-Id: Id4c572809969ebe89e946e88063eaed262cff3f2 Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c')
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c246
1 files changed, 0 insertions, 246 deletions
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c b/rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c
deleted file mode 100644
index 0ea57739..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/misc/unix/otherchild.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr.h"
-#include "apr_arch_misc.h"
-#include "apr_arch_threadproc.h"
-#include "apr_arch_file_io.h"
-
-#if APR_HAS_OTHER_CHILD
-
-#ifdef HAVE_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#if APR_HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-#ifdef BEOS
-#include <sys/socket.h> /* for fd_set definition! */
-#endif
-
-static apr_other_child_rec_t *other_children = NULL;
-
-static apr_status_t other_child_cleanup(void *data)
-{
- apr_other_child_rec_t **pocr, *nocr;
-
- for (pocr = &other_children; *pocr; pocr = &(*pocr)->next) {
- if ((*pocr)->data == data) {
- nocr = (*pocr)->next;
- (*(*pocr)->maintenance) (APR_OC_REASON_UNREGISTER, (*pocr)->data, -1);
- *pocr = nocr;
- /* XXX: um, well we've just wasted some space in pconf ? */
- return APR_SUCCESS;
- }
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc,
- void (*maintenance) (int reason, void *, int status),
- void *data, apr_file_t *write_fd, apr_pool_t *p)
-{
- apr_other_child_rec_t *ocr;
-
- ocr = apr_palloc(p, sizeof(*ocr));
- ocr->p = p;
- ocr->proc = proc;
- ocr->maintenance = maintenance;
- ocr->data = data;
- if (write_fd == NULL) {
- ocr->write_fd = (apr_os_file_t) -1;
- }
- else {
-#ifdef WIN32
- /* This should either go away as part of eliminating apr_proc_probe_writable_fds
- * or write_fd should point to an apr_file_t
- */
- ocr->write_fd = write_fd->filehand;
-#else
- ocr->write_fd = write_fd->filedes;
-#endif
-
- }
- ocr->next = other_children;
- other_children = ocr;
- apr_pool_cleanup_register(p, ocr->data, other_child_cleanup,
- apr_pool_cleanup_null);
-}
-
-APR_DECLARE(void) apr_proc_other_child_unregister(void *data)
-{
- apr_other_child_rec_t *cur;
-
- cur = other_children;
- while (cur) {
- if (cur->data == data) {
- break;
- }
- cur = cur->next;
- }
-
- /* segfault if this function called with invalid parm */
- apr_pool_cleanup_kill(cur->p, cur->data, other_child_cleanup);
- other_child_cleanup(data);
-}
-
-APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc,
- int reason,
- int status)
-{
- apr_other_child_rec_t *ocr, *nocr;
-
- for (ocr = other_children; ocr; ocr = nocr) {
- nocr = ocr->next;
- if (ocr->proc->pid != proc->pid)
- continue;
-
- ocr->proc = NULL;
- (*ocr->maintenance) (reason, ocr->data, status);
- return APR_SUCCESS;
- }
- return APR_EPROC_UNKNOWN;
-}
-
-APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr,
- int reason)
-{
- /* Todo:
- * Implement code to detect if pipes are still alive.
- */
-#ifdef WIN32
- DWORD status;
-
- if (ocr->proc == NULL)
- return;
-
- if (!ocr->proc->hproc) {
- /* Already mopped up, perhaps we apr_proc_kill'ed it,
- * they should have already unregistered!
- */
- ocr->proc = NULL;
- (*ocr->maintenance) (APR_OC_REASON_LOST, ocr->data, -1);
- }
- else if (!GetExitCodeProcess(ocr->proc->hproc, &status)) {
- CloseHandle(ocr->proc->hproc);
- ocr->proc->hproc = NULL;
- ocr->proc = NULL;
- (*ocr->maintenance) (APR_OC_REASON_LOST, ocr->data, -1);
- }
- else if (status == STILL_ACTIVE) {
- (*ocr->maintenance) (reason, ocr->data, -1);
- }
- else {
- CloseHandle(ocr->proc->hproc);
- ocr->proc->hproc = NULL;
- ocr->proc = NULL;
- (*ocr->maintenance) (APR_OC_REASON_DEATH, ocr->data, status);
- }
-
-#else /* ndef Win32 */
- pid_t waitret;
- int status;
-
- if (ocr->proc == NULL)
- return;
-
- waitret = waitpid(ocr->proc->pid, &status, WNOHANG);
- if (waitret == ocr->proc->pid) {
- ocr->proc = NULL;
- (*ocr->maintenance) (APR_OC_REASON_DEATH, ocr->data, status);
- }
- else if (waitret == 0) {
- (*ocr->maintenance) (reason, ocr->data, -1);
- }
- else if (waitret == -1) {
- /* uh what the heck? they didn't call unregister? */
- ocr->proc = NULL;
- (*ocr->maintenance) (APR_OC_REASON_LOST, ocr->data, -1);
- }
-#endif
-}
-
-APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason)
-{
- apr_other_child_rec_t *ocr, *next_ocr;
-
- for (ocr = other_children; ocr; ocr = next_ocr) {
- next_ocr = ocr->next;
- apr_proc_other_child_refresh(ocr, reason);
- }
-}
-
-#else /* !APR_HAS_OTHER_CHILD */
-
-APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc,
- void (*maintenance) (int reason, void *, int status),
- void *data, apr_file_t *write_fd, apr_pool_t *p)
-{
- return;
-}
-
-APR_DECLARE(void) apr_proc_other_child_unregister(void *data)
-{
- return;
-}
-
-APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc,
- int reason,
- int status)
-{
- return APR_ENOTIMPL;
-}
-
-APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr,
- int reason)
-{
- return;
-}
-
-APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason)
-{
- return;
-}
-
-#endif /* APR_HAS_OTHER_CHILD */
-
-
-/* XXX: deprecated for removal in 1.0
- * The checks behaved differently between win32 and unix, while
- * the old win32 code did a health check, the unix code called
- * other_child_check only at restart.
- */
-APR_DECLARE(void) apr_proc_other_child_check(void)
-{
-#ifdef WIN32
- apr_proc_other_child_refresh_all(APR_OC_REASON_RUNNING);
-#else
- apr_proc_other_child_refresh_all(APR_OC_REASON_RESTART);
-#endif
-}
-
-/* XXX: deprecated for removal in 1.0
- * This really didn't test any sort of read - it simply notified
- * the maintenance function that the process had died.
- */
-APR_DECLARE(apr_status_t) apr_proc_other_child_read(apr_proc_t *proc, int status)
-{
- return apr_proc_other_child_alert(proc, APR_OC_REASON_DEATH, status);
-}
-