1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 28 /* All Rights Reserved */ 29 30 #include "dispatch.h" 31 #include <syslog.h> 32 33 extern int Net_fd; 34 35 extern MESG * Net_md; 36 37 /** 38 ** s_child_done() 39 **/ 40 41 void 42 s_child_done(char *m, MESG *md) 43 { 44 long key; 45 short status; 46 short err; 47 int i; 48 49 50 getmessage (m, S_CHILD_DONE, &key, &status, &err); 51 syslog(LOG_DEBUG, "s_child_done(%d, %d, %d)", key, status, err); 52 53 for (i = 0; Exec_Table[i] != NULL; i++) 54 if ((Exec_Table[i]->key == key) && (Exec_Table[i]->md == md)) { 55 EXEC *ep = Exec_Table[i]; 56 57 syslog(LOG_DEBUG, 58 "s_child_done(%d, 0x%8.8x): clearing 0x%8.8x", 59 key, md, ep); 60 /* 61 * Remove the message descriptor from the listen 62 * table, then forget about it; we don't want to 63 * accidently match this exec-slot to a future, 64 * unrelated child. 65 */ 66 DROP_MD (ep->md); 67 68 ep->pid = -99; 69 ep->status = status; 70 ep->Errno = err; 71 DoneChildren++; 72 } 73 74 return; 75 } 76