X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Security/libsecurity_utilities/lib/security_utilities.d diff --git a/Security/libsecurity_utilities/lib/security_utilities.d b/Security/libsecurity_utilities/lib/security_utilities.d new file mode 100644 index 00000000..ce93f727 --- /dev/null +++ b/Security/libsecurity_utilities/lib/security_utilities.d @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2008 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + * + * + * DTrace static providers at the security utility layer + */ +#define int32_t int +#define uint32_t unsigned + + +/* + * The security-debug provider replaces the old text-based debug log facility + */ +provider security_debug { + probe log(const char *scope, const char *message); + probe logp(const char *scope, void *object, const char *message); + probe delay(const char *path); + + probe sec__create(void *object, const char *className, uint32_t classID); + probe sec__destroy(void *object); + + probe refcount__create(const void *p); + probe refcount__up(const void *p, unsigned count); + probe refcount__down(const void *p, unsigned count); +}; + + +/* + * Track and monitor C++ exception activity + */ +typedef const void *DTException; + +provider security_exception { + probe throw__osstatus(DTException error, int32_t status); + probe throw__cssm(DTException error, uint32_t status); + probe throw__mach(DTException error, int32_t status); + probe throw__unix(DTException error, int errno); + probe throw__pcsc(DTException error, uint32_t status); + probe throw__sqlite(DTException error, int status, const char *message); + probe throw__cf(DTException error); + probe throw__other(DTException error, uint32_t status, const char *type); + probe copy(DTException newError, DTException oldError); + probe handled(DTException error); +}; + + +/* + * The MachServer run-loop controller + */ +provider security_machserver { + probe start_thread(int subthread); + probe end_thread(int thrown); + probe begin(uint32_t servicePort, int id); + probe end(); + probe timer__start(void *timer, int longterm, double when); + probe timer__end(int thrown); + probe port__add(uint32_t port); + probe port__remove(uint32_t port); + probe receive(double timeout); // (timeout == 0 means infinite) + probe receive_error(uint32_t machError); + probe send_error(uint32_t machError, uint32_t replyPort); + probe reap(uint32_t count, uint32_t idle); + probe alloc__register(const void *memory, const void *allocator); + probe alloc__release(const void *memory, const void *allocator); +};