Home | History | Annotate | Download | only in lpsched
      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 
     31 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     32 
     33 #include "dispatch.h"
     34 #include <syslog.h>
     35 
     36 extern int		Net_fd;
     37 
     38 extern MESG *		Net_md;
     39 
     40 /**
     41  ** s_child_done()
     42  **/
     43 
     44 void
     45 s_child_done(char *m, MESG *md)
     46 {
     47 	long			key;
     48 	short			status;
     49 	short			err;
     50 	int			i;
     51 
     52 
     53 	getmessage (m, S_CHILD_DONE, &key, &status, &err);
     54 	syslog(LOG_DEBUG, "s_child_done(%d, %d, %d)", key, status, err);
     55 
     56 	for (i = 0; Exec_Table[i] != NULL; i++)
     57 		if ((Exec_Table[i]->key == key) && (Exec_Table[i]->md == md)) {
     58 			EXEC *ep = Exec_Table[i];
     59 
     60 			syslog(LOG_DEBUG,
     61 				"s_child_done(%d, 0x%8.8x): clearing 0x%8.8x",
     62 				key, md, ep);
     63 			/*
     64 		 	* Remove the message descriptor from the listen
     65 		 	* table, then forget about it; we don't want to
     66 		 	* accidently match this exec-slot to a future,
     67 		 	* unrelated child.
     68 		 	*/
     69 			DROP_MD (ep->md);
     70 
     71 			ep->pid = -99;
     72 			ep->status = status;
     73 			ep->Errno = err;
     74 			DoneChildren++;
     75 		}
     76 
     77 	return;
     78 }
     79