1*fcf3ce44SJohn Forte /* 2*fcf3ce44SJohn Forte * CDDL HEADER START 3*fcf3ce44SJohn Forte * 4*fcf3ce44SJohn Forte * The contents of this file are subject to the terms of the 5*fcf3ce44SJohn Forte * Common Development and Distribution License (the "License"). 6*fcf3ce44SJohn Forte * You may not use this file except in compliance with the License. 7*fcf3ce44SJohn Forte * 8*fcf3ce44SJohn Forte * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*fcf3ce44SJohn Forte * or http://www.opensolaris.org/os/licensing. 10*fcf3ce44SJohn Forte * See the License for the specific language governing permissions 11*fcf3ce44SJohn Forte * and limitations under the License. 12*fcf3ce44SJohn Forte * 13*fcf3ce44SJohn Forte * When distributing Covered Code, include this CDDL HEADER in each 14*fcf3ce44SJohn Forte * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*fcf3ce44SJohn Forte * If applicable, add the following below this CDDL HEADER, with the 16*fcf3ce44SJohn Forte * fields enclosed by brackets "[]" replaced with your own identifying 17*fcf3ce44SJohn Forte * information: Portions Copyright [yyyy] [name of copyright owner] 18*fcf3ce44SJohn Forte * 19*fcf3ce44SJohn Forte * CDDL HEADER END 20*fcf3ce44SJohn Forte */ 21*fcf3ce44SJohn Forte 22*fcf3ce44SJohn Forte /* 23*fcf3ce44SJohn Forte * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*fcf3ce44SJohn Forte * Use is subject to license terms. 25*fcf3ce44SJohn Forte */ 26*fcf3ce44SJohn Forte 27*fcf3ce44SJohn Forte #ifndef _ISNS_MSGQ_H 28*fcf3ce44SJohn Forte #define _ISNS_MSGQ_H 29*fcf3ce44SJohn Forte 30*fcf3ce44SJohn Forte #include <pthread.h> 31*fcf3ce44SJohn Forte #include <synch.h> 32*fcf3ce44SJohn Forte 33*fcf3ce44SJohn Forte #ifdef __cplusplus 34*fcf3ce44SJohn Forte extern "C" { 35*fcf3ce44SJohn Forte #endif 36*fcf3ce44SJohn Forte 37*fcf3ce44SJohn Forte #define TEST_CLI_STOPPED (0x0001) 38*fcf3ce44SJohn Forte #define DD_SERVICE_STOPPED (0x0002) 39*fcf3ce44SJohn Forte #define SCN_STOPPED (0x0004) 40*fcf3ce44SJohn Forte #define ESI_STOPPED (0x0008) 41*fcf3ce44SJohn Forte 42*fcf3ce44SJohn Forte typedef enum msg_id { 43*fcf3ce44SJohn Forte DATA_ADD = 1, 44*fcf3ce44SJohn Forte DATA_UPDATE, 45*fcf3ce44SJohn Forte DATA_DELETE, 46*fcf3ce44SJohn Forte DATA_DELETE_ASSOC, 47*fcf3ce44SJohn Forte DATA_COMMIT, 48*fcf3ce44SJohn Forte DATA_RETREAT, 49*fcf3ce44SJohn Forte REG_EXP, 50*fcf3ce44SJohn Forte DEAD_PORTAL, 51*fcf3ce44SJohn Forte SYS_QUIT_OK, 52*fcf3ce44SJohn Forte SCN_ADD = 100, 53*fcf3ce44SJohn Forte SCN_REMOVE, 54*fcf3ce44SJohn Forte SCN_REMOVE_P, 55*fcf3ce44SJohn Forte SCN_SET, 56*fcf3ce44SJohn Forte SCN_TRIGGER, 57*fcf3ce44SJohn Forte SCN_IGNORE, 58*fcf3ce44SJohn Forte SCN_STOP, 59*fcf3ce44SJohn Forte SERVER_EXIT, 60*fcf3ce44SJohn Forte CONFIG_RELOAD 61*fcf3ce44SJohn Forte } msg_id_t; 62*fcf3ce44SJohn Forte 63*fcf3ce44SJohn Forte typedef struct msg_text { 64*fcf3ce44SJohn Forte struct msg_text *prev; 65*fcf3ce44SJohn Forte struct msg_text *next; 66*fcf3ce44SJohn Forte msg_id_t id; 67*fcf3ce44SJohn Forte void *data; 68*fcf3ce44SJohn Forte } msg_text_t; 69*fcf3ce44SJohn Forte 70*fcf3ce44SJohn Forte typedef struct msg_queue { 71*fcf3ce44SJohn Forte msg_text_t *q_head; 72*fcf3ce44SJohn Forte msg_text_t *q_tail; 73*fcf3ce44SJohn Forte pthread_mutex_t q_mutex; 74*fcf3ce44SJohn Forte sema_t q_sema; 75*fcf3ce44SJohn Forte } msg_queue_t; 76*fcf3ce44SJohn Forte 77*fcf3ce44SJohn Forte /* function prototypes */ 78*fcf3ce44SJohn Forte msg_queue_t *queue_calloc(); 79*fcf3ce44SJohn Forte int queue_msg_set(msg_queue_t *, msg_id_t, void *); 80*fcf3ce44SJohn Forte msg_text_t *queue_msg_get(msg_queue_t *); 81*fcf3ce44SJohn Forte void queue_msg_free(msg_text_t *); 82*fcf3ce44SJohn Forte 83*fcf3ce44SJohn Forte #ifdef __cplusplus 84*fcf3ce44SJohn Forte } 85*fcf3ce44SJohn Forte #endif 86*fcf3ce44SJohn Forte 87*fcf3ce44SJohn Forte #endif /* _ISNS_MSGQ_H */ 88