llib-lsysevent revision 7c478bd95313f5f23a4c958a745db2134aa03244
3eb95d6629bb326ae90e5eec693b7e628951751brbb/*
431d6106eaf796cc8dfa8cb0db2b180dd93ed6dftrawick * CDDL HEADER START
dc10f7a2f87d4cd7cdd16dc248b165122b4ac62btrawick *
dc10f7a2f87d4cd7cdd16dc248b165122b4ac62btrawick * The contents of this file are subject to the terms of the
dc10f7a2f87d4cd7cdd16dc248b165122b4ac62btrawick * Common Development and Distribution License, Version 1.0 only
dc10f7a2f87d4cd7cdd16dc248b165122b4ac62btrawick * (the "License"). You may not use this file except in compliance
431d6106eaf796cc8dfa8cb0db2b180dd93ed6dftrawick * with the License.
431d6106eaf796cc8dfa8cb0db2b180dd93ed6dftrawick *
390489eb69fe15943ddf67adcc832ca8de125cd9jerenkrantz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
390489eb69fe15943ddf67adcc832ca8de125cd9jerenkrantz * or http://www.opensolaris.org/os/licensing.
390489eb69fe15943ddf67adcc832ca8de125cd9jerenkrantz * See the License for the specific language governing permissions
390489eb69fe15943ddf67adcc832ca8de125cd9jerenkrantz * and limitations under the License.
a1e8b54f269a8f2388590174174509546e886e60stoddard *
a1e8b54f269a8f2388590174174509546e886e60stoddard * When distributing Covered Code, include this CDDL HEADER in each
a1e8b54f269a8f2388590174174509546e886e60stoddard * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3eb95d6629bb326ae90e5eec693b7e628951751brbb * If applicable, add the following below this CDDL HEADER, with the
109d280c3fcf810e573fc1af5e141ad525c45811bjh * fields enclosed by brackets "[]" replaced with your own identifying
109d280c3fcf810e573fc1af5e141ad525c45811bjh * information: Portions Copyright [yyyy] [name of copyright owner]
109d280c3fcf810e573fc1af5e141ad525c45811bjh *
61d2cd001754548e90364aa3a7e76863616544b0minfrin * CDDL HEADER END
61d2cd001754548e90364aa3a7e76863616544b0minfrin */
61d2cd001754548e90364aa3a7e76863616544b0minfrin/*LINTLIBRARY*/
61d2cd001754548e90364aa3a7e76863616544b0minfrin/*PROTOLIB1*/
61d2cd001754548e90364aa3a7e76863616544b0minfrin/*
9a3bbca61e24c13d8b496116ac759117136c6bf4aaron * Copyright 2000-2003 Sun Microsystems, Inc. All rights reserved.
9a3bbca61e24c13d8b496116ac759117136c6bf4aaron * Use is subject to license terms.
9a3bbca61e24c13d8b496116ac759117136c6bf4aaron *
9a3bbca61e24c13d8b496116ac759117136c6bf4aaron * usr/src/lib/libsysevent/llib-lsysevent
9a3bbca61e24c13d8b496116ac759117136c6bf4aaron */
64c351fd973428b5bb4c28e983fa86875ea4e60fdougm
64c351fd973428b5bb4c28e983fa86875ea4e60fdougm#pragma ident "%Z%%M% %I% %E% SMI"
64c351fd973428b5bb4c28e983fa86875ea4e60fdougm
64c351fd973428b5bb4c28e983fa86875ea4e60fdougm#include <synch.h>
0506359f47150991eaaae37ca07f94117a9aa63dtrawick#include <thread.h>
0506359f47150991eaaae37ca07f94117a9aa63dtrawick#include "libsysevent.h"
0506359f47150991eaaae37ca07f94117a9aa63dtrawick
0506359f47150991eaaae37ca07f94117a9aa63dtrawickint sysevent_post_event(char *event_class, char *event_subclass, char *vendor,
67f62b7a48ff9eb8d9f31898dceaf9f89280a723dougm char *pub_name, nvlist_t *attr_list, sysevent_id_t *eid);
67f62b7a48ff9eb8d9f31898dceaf9f89280a723dougmsysevent_t *sysevent_dup(sysevent_t *ev);
9d3fdc3bb8077a46851080e17ef9f16c83720c8ftrawick
9d3fdc3bb8077a46851080e17ef9f16c83720c8ftrawickvoid sysevent_free(sysevent_t *ev);
9d3fdc3bb8077a46851080e17ef9f16c83720c8ftrawick
219472ea2d5f1563509321d8b8a91b116792bf7adougmint sysevent_get_attr_list(sysevent_t *ev, nvlist_t **nvlist);
219472ea2d5f1563509321d8b8a91b116792bf7adougm
219472ea2d5f1563509321d8b8a91b116792bf7adougmint sysevent_lookup_attr(sysevent_t *ev, char *name, int datatype,
c048b545f06921f53ceb830b30f99aed7b369d95dougm sysevent_value_t *se_value);
c048b545f06921f53ceb830b30f99aed7b369d95dougm
c048b545f06921f53ceb830b30f99aed7b369d95dougmsysevent_attr_t *sysevent_attr_next(sysevent_t *ev, sysevent_attr_t *attr);
621bd763d2e4d32f19013ac8b76b375b5a01851fdougm
621bd763d2e4d32f19013ac8b76b375b5a01851fdougmchar *sysevent_attr_name(sysevent_attr_t *attr);
621bd763d2e4d32f19013ac8b76b375b5a01851fdougm
0ea12b5dcb3d1d399f9bff6f56fb445d80205f9dstrikerint sysevent_attr_value(sysevent_attr_t *attr, sysevent_value_t *se_value);
0ea12b5dcb3d1d399f9bff6f56fb445d80205f9dstriker
0ea12b5dcb3d1d399f9bff6f56fb445d80205f9dstrikerint sysevent_get_class(sysevent_t *ev);
e93624301705e3dc68992e3b488a764389eb8b98trawick
e93624301705e3dc68992e3b488a764389eb8b98trawickchar *sysevent_get_class_name(sysevent_t *ev);
cba0728e3535ee87e89cdb3cb54ce91eda18f6ccaaron
cba0728e3535ee87e89cdb3cb54ce91eda18f6ccaaronint sysevent_get_subclass(sysevent_t *ev);
cba0728e3535ee87e89cdb3cb54ce91eda18f6ccaaron
a45de374fb215f294eb1369d4406ac79d6596ee1brianpchar *sysevent_get_subclass_name(sysevent_t *ev);
a45de374fb215f294eb1369d4406ac79d6596ee1brianp
a45de374fb215f294eb1369d4406ac79d6596ee1brianpchar *sysevent_get_pub(sysevent_t *ev);
a45de374fb215f294eb1369d4406ac79d6596ee1brianp
7f14bcf6b594703df385ce84ba2ee3cdf3ccbae4trawickchar *sysevent_get_vendor_name(sysevent_t *ev);
7f14bcf6b594703df385ce84ba2ee3cdf3ccbae4trawick
7f14bcf6b594703df385ce84ba2ee3cdf3ccbae4trawickchar *sysevent_get_pub_name(sysevent_t *ev);
7f14bcf6b594703df385ce84ba2ee3cdf3ccbae4trawick
0007bb1e01dd762bde7280beb57113309c1715a3trawickvoid sysevent_get_pid(sysevent_t *ev, pid_t *pid);
a1be7357e2c08b9dfe52c277063d212d65b15feejim
a1be7357e2c08b9dfe52c277063d212d65b15feejimuint64_t sysevent_get_seq(sysevent_t *ev);
a1be7357e2c08b9dfe52c277063d212d65b15feejim
a1be7357e2c08b9dfe52c277063d212d65b15feejimvoid sysevent_get_time(sysevent_t *ev, hrtime_t *etime);
a1be7357e2c08b9dfe52c277063d212d65b15feejim
6682df9b639663c50f447e5690dd62cce7b1c086trawicksize_t sysevent_get_size(sysevent_t *ev);
6682df9b639663c50f447e5690dd62cce7b1c086trawick
6682df9b639663c50f447e5690dd62cce7b1c086trawickint sysevent_send_event(sysevent_handle_t *sysevent_hdl, sysevent_t *ev);
51c0f0fe0a49a180389009442a83f74b1916f96atrawick
51c0f0fe0a49a180389009442a83f74b1916f96atrawicksysevent_t * sysevent_alloc_event(char *event_class, char *event_subclass,
51c0f0fe0a49a180389009442a83f74b1916f96atrawick char *vendor, char *pub_name, nvlist_t *attr_list);
51c0f0fe0a49a180389009442a83f74b1916f96atrawick
51c0f0fe0a49a180389009442a83f74b1916f96atrawicksysevent_handle_t * sysevent_open_channel(const char *channel);
7e8bc9ca9d1e752f6ca6debec6be8addae8bd72etrawick
7e8bc9ca9d1e752f6ca6debec6be8addae8bd72etrawicksysevent_handle_t * sysevent_open_channel_alt(const char *channel_path);
7e8bc9ca9d1e752f6ca6debec6be8addae8bd72etrawick
ecb511c254d5affe7cc018482d53c19aaf145878jerenkrantzvoid sysevent_close_channel(sysevent_handle_t *shp);
ecb511c254d5affe7cc018482d53c19aaf145878jerenkrantz
ecb511c254d5affe7cc018482d53c19aaf145878jerenkrantzint sysevent_bind_subscriber(sysevent_handle_t *shp,
ecb511c254d5affe7cc018482d53c19aaf145878jerenkrantz void (*callback)(sysevent_t *data));
60b83cd8f9427809082340cfd7581091990962f5jwoolley
60b83cd8f9427809082340cfd7581091990962f5jwoolleyint sysevent_bind_publisher(sysevent_handle_t *shp);
60b83cd8f9427809082340cfd7581091990962f5jwoolley
e93624301705e3dc68992e3b488a764389eb8b98trawickvoid sysevent_unbind_subscriber(sysevent_handle_t *shp);
e93624301705e3dc68992e3b488a764389eb8b98trawick
e93624301705e3dc68992e3b488a764389eb8b98trawickvoid sysevent_unbind_publisher(sysevent_handle_t *shp);
4da4d1ae427ee8827c2325dd121ac05a83afd579wrowe
a2d4f1da4e19836b2d6a673f80f33381a926a8bddougmint sysevent_register_event(sysevent_handle_t *shp, const char *event_class,
d56d6753a75f5b915120c797aedbfcf13bb14c8brbb const char **event_subclass_list, int num_subclasses);
d56d6753a75f5b915120c797aedbfcf13bb14c8brbb
d56d6753a75f5b915120c797aedbfcf13bb14c8brbbvoid sysevent_unregister_event(sysevent_handle_t *shp,
d56d6753a75f5b915120c797aedbfcf13bb14c8brbb const char *event_class);
d56d6753a75f5b915120c797aedbfcf13bb14c8brbb
4aaf7088758ca56823e585969320f2405a7cc5fcdougmvoid sysevent_cleanup_publishers(sysevent_handle_t *shp);
4aaf7088758ca56823e585969320f2405a7cc5fcdougm
4aaf7088758ca56823e585969320f2405a7cc5fcdougmvoid sysevent_cleanup_subscribers(sysevent_handle_t *shp);
e0596968fe84a2bdaebe0192d8d64d2e9856d4d6brianp
e0596968fe84a2bdaebe0192d8d64d2e9856d4d6brianpsysevent_handle_t *sysevent_bind_handle(void (*event_handler)(sysevent_t *ev));
e0596968fe84a2bdaebe0192d8d64d2e9856d4d6brianp
f33c2c86b419be97248c5289b71738b5f0c7ab0adirkxvoid sysevent_unbind_handle(sysevent_handle_t *shp);
f33c2c86b419be97248c5289b71738b5f0c7ab0adirkx
f33c2c86b419be97248c5289b71738b5f0c7ab0adirkxint sysevent_subscribe_event(sysevent_handle_t *shp, const char *event_class,
c5fdaba2e790a0a351d796b5fe3dcfb585be1ba2jim const char **event_subclass_list, int num_subclasses);
c5fdaba2e790a0a351d796b5fe3dcfb585be1ba2jim
c5fdaba2e790a0a351d796b5fe3dcfb585be1ba2jimvoid sysevent_unsubscribe_event(sysevent_handle_t *shp,
c5fdaba2e790a0a351d796b5fe3dcfb585be1ba2jim const char *event_class);
c5fdaba2e790a0a351d796b5fe3dcfb585be1ba2jim
2fc50921b88defeb7127985dfe4b4130175e069ejwoolleyvoid se_print(FILE *fp, sysevent_t *ev);
2fc50921b88defeb7127985dfe4b4130175e069ejwoolley
2fc50921b88defeb7127985dfe4b4130175e069ejwoolleyint sysevent_evc_bind(const char *channel_path, evchan_t **scpp,
2fc50921b88defeb7127985dfe4b4130175e069ejwoolley uint32_t flags);
2fc50921b88defeb7127985dfe4b4130175e069ejwoolley
47638f4a67ce38e5a83e7a303d6f2d5c9ff47b4ebrianpvoid sysevent_evc_unbind(evchan_t *scp);
47638f4a67ce38e5a83e7a303d6f2d5c9ff47b4ebrianp
47638f4a67ce38e5a83e7a303d6f2d5c9ff47b4ebrianpint sysevent_evc_publish(evchan_t *scp, const char *event_class,
82630c4a04be47f39298d3284b2c596244fb509bbrianp const char *event_subclass, const char *vendor, const char *pub_name,
82630c4a04be47f39298d3284b2c596244fb509bbrianp nvlist_t *attr_list, uint32_t flags);
0d24ea1c99d2267096caaf0843c7e5a1ac6b7c0bmjc
35d682920b0b7073bb9ff8c8794f0f73e3ee1a47sliveint sysevent_evc_subscribe(evchan_t *scp, const char *sid,
35d682920b0b7073bb9ff8c8794f0f73e3ee1a47slive const char *event_class,
a2d4f1da4e19836b2d6a673f80f33381a926a8bddougm int (*event_handler)(sysevent_t *ev, void *cookie),
a2d4f1da4e19836b2d6a673f80f33381a926a8bddougm void *cookie, uint32_t flags);
a2d4f1da4e19836b2d6a673f80f33381a926a8bddougm
30b4a330a5f651eb5198fa93dbb9f3d3594564c9stoddardvoid sysevent_evc_unsubscribe(evchan_t *scp, const char *sid);
30b4a330a5f651eb5198fa93dbb9f3d3594564c9stoddard
30b4a330a5f651eb5198fa93dbb9f3d3594564c9stoddardint sysevent_evc_control(evchan_t *scp, int cmd, ...);
30b4a330a5f651eb5198fa93dbb9f3d3594564c9stoddard