From: Ivo Raisr Date: Wed, 16 Mar 2016 15:08:42 +0000 (+0000) Subject: Add support for repository cache protocol version 31 X-Git-Tag: svn/VALGRIND_3_12_0~192 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3eb7a88949eab08706e64f95e75801b6ed781a7;p=thirdparty%2Fvalgrind.git Add support for repository cache protocol version 31 n-i-bz git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15831 --- diff --git a/coregrind/m_syswrap/syswrap-solaris.c b/coregrind/m_syswrap/syswrap-solaris.c index a307f6c38a..ca9db129df 100644 --- a/coregrind/m_syswrap/syswrap-solaris.c +++ b/coregrind/m_syswrap/syswrap-solaris.c @@ -8294,6 +8294,9 @@ static void repository_door_pre_mem_door_call_hook(ThreadId tid, Int fd, } break; case VKI_REP_PROTOCOL_ENTITY_GET_CHILD: +#if (SOLARIS_REPCACHE_PROTOCOL_VERSION >= 31) + case VKI_REP_PROTOCOL_ENTITY_GET_CHILD_COMPOSED: +#endif { struct vki_rep_protocol_entity_get_child *r = (struct vki_rep_protocol_entity_get_child *) p; diff --git a/include/vki/vki-solaris-repcache.h b/include/vki/vki-solaris-repcache.h index 4ef6808d9d..e2ad269b3a 100644 --- a/include/vki/vki-solaris-repcache.h +++ b/include/vki/vki-solaris-repcache.h @@ -7,7 +7,7 @@ This file is part of Valgrind, a dynamic binary instrumentation framework. - Copyright (C) 2015-2015 Ivo Raisr + Copyright (C) 2015-2016 Ivo Raisr ivosh@ivosh.net This program is free software; you can redistribute it and/or @@ -285,6 +285,60 @@ enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, VKI_REP_PROTOCOL_MAX_REQUEST }; +#elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 31) +#define VKI_REPOSITORY_DOOR_VERSION (31 + VKI_REPOSITORY_DOOR_BASEVER) +enum vki_rep_protocol_requestid { + VKI_REP_PROTOCOL_CLOSE = ('C' << 8), + VKI_REP_PROTOCOL_ENTITY_SETUP, + VKI_REP_PROTOCOL_ENTITY_NAME, + VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, + VKI_REP_PROTOCOL_ENTITY_GET_CHILD, + VKI_REP_PROTOCOL_ENTITY_GET_CHILD_COMPOSED, + VKI_REP_PROTOCOL_ENTITY_GET_PARENT, + VKI_REP_PROTOCOL_ENTITY_GET_ROOT, + VKI_REP_PROTOCOL_ENTITY_GET, + VKI_REP_PROTOCOL_ENTITY_UPDATE, + VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, + VKI_REP_PROTOCOL_ENTITY_CREATE_PG, + VKI_REP_PROTOCOL_ENTITY_DELETE, + VKI_REP_PROTOCOL_ENTITY_UNDELETE, + VKI_REP_PROTOCOL_ENTITY_REMOVE, + VKI_REP_PROTOCOL_ENTITY_DELCUST, + VKI_REP_PROTOCOL_BUNDLE_REMOVE, + VKI_REP_PROTOCOL_ENTITY_RESET, + VKI_REP_PROTOCOL_ENTITY_TEARDOWN, + VKI_REP_PROTOCOL_ITER_SETUP, + VKI_REP_PROTOCOL_ITER_START, + VKI_REP_PROTOCOL_ITER_READ, + VKI_REP_PROTOCOL_ITER_READ_VALUE, + VKI_REP_PROTOCOL_ITER_RESET, + VKI_REP_PROTOCOL_ITER_TEARDOWN, + VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, + VKI_REP_PROTOCOL_SNAPSHOT_TAKE, + VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, + VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, + VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, + VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, + VKI_REP_PROTOCOL_PG_SETUP_WAIT, + VKI_REP_PROTOCOL_PG_TX_START, + VKI_REP_PROTOCOL_PG_TX_COMMIT, + VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, + VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, + VKI_REP_PROTOCOL_CLIENT_WAIT, + VKI_REP_PROTOCOL_BACKUP, + VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, + VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, + VKI_REP_PROTOCOL_SET_LAYER, + VKI_REP_PROTOCOL_SWITCH, + VKI_REP_PROTOCOL_DECORATION_GET_LAYER, + VKI_REP_PROTOCOL_DECORATION_GET_TYPE, + VKI_REP_PROTOCOL_DECORATION_GET_VALUE, + VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, + VKI_REP_PROTOCOL_ENTITY_INCONFLICT, + VKI_REP_PROTOCOL_ENTITY_IS_MASKED, + VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, + VKI_REP_PROTOCOL_MAX_REQUEST +}; #else #error Unsupported repcache protocol version #endif @@ -295,6 +349,7 @@ enum vki_rep_protocol_requestid { #define VKI_REPOSITORY_DOOR_NAME "/system/volatile/repository_door" #define VKI_REP_PROTOCOL_NAME_LEN 120 +typedef vki_uint32_t vki_repcache_entity_id_t; enum vki_repository_door_requestid { VKI_REPOSITORY_DOOR_REQUEST_CONNECT = (('M' << 8) | 1) }; @@ -320,52 +375,52 @@ typedef struct vki_rep_protocol_request { } vki_rep_protocol_request_t; struct vki_rep_protocol_entity_setup { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_entitytype; }; struct vki_rep_protocol_entity_name { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_answertype; }; struct vki_rep_protocol_entity_fmri { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_entity_get { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_object; }; struct vki_rep_protocol_entity_get_child { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; - vki_uint32_t rpr_childid; + vki_repcache_entity_id_t rpr_entityid; + vki_repcache_entity_id_t rpr_childid; char rpr_name[VKI_REP_PROTOCOL_NAME_LEN]; }; struct vki_rep_protocol_entity_parent { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; - vki_uint32_t rpr_outid; + vki_repcache_entity_id_t rpr_entityid; + vki_repcache_entity_id_t rpr_outid; }; struct vki_rep_protocol_entity_root { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; - vki_uint32_t rpr_outid; + vki_repcache_entity_id_t rpr_entityid; + vki_repcache_entity_id_t rpr_outid; }; struct vki_rep_protocol_entity_reset { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_entity_teardown { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_iter_read { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; vki_uint32_t rpr_sequence; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_iter_read_value { enum vki_rep_protocol_requestid rpr_request; @@ -379,17 +434,17 @@ struct vki_rep_protocol_iter_request { struct vki_rep_protocol_iter_start { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; - vki_uint32_t rpr_entity; + vki_repcache_entity_id_t rpr_entity; vki_uint32_t rpr_itertype; vki_uint32_t rpr_flags; char rpr_pattern[VKI_REP_PROTOCOL_NAME_LEN]; }; struct vki_rep_protocol_property_request { enum vki_rep_protocol_requestid rpr_request; - vki_uint32_t rpr_entityid; + vki_repcache_entity_id_t rpr_entityid; }; -#endif /* __VKI_SOLARIS_REPCACHE_21_H */ +#endif /* __VKI_SOLARIS_REPCACHE_H */