+++ /dev/null
-/*
- * Copyright (c) 2000, 2001, 2004, 2005, 2009-2011, 2015-2017 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@
- */
-
-/*
- * Modification History
- *
- * June 1, 2001 Allan Nathanson <ajn@apple.com>
- * - public API conversion
- *
- * March 31, 2000 Allan Nathanson <ajn@apple.com>
- * - initial revision
- */
-
-#include "SCDynamicStoreInternal.h"
-#include "config.h" /* MiG generated file */
-
-Boolean
-SCDynamicStoreNotifySignal(SCDynamicStoreRef store, pid_t pid, int sig)
-{
- SCDynamicStorePrivateRef storePrivate = (SCDynamicStorePrivateRef)store;
- kern_return_t status;
- int sc_status;
- task_t task;
-
- if (store == NULL) {
- /* sorry, you must provide a session */
- _SCErrorSet(kSCStatusNoStoreSession);
- return FALSE;
- }
-
- if (storePrivate->server == MACH_PORT_NULL) {
- /* sorry, you must have an open session to play */
- _SCErrorSet(kSCStatusNoStoreServer);
- return FALSE;
- }
-
- if (storePrivate->notifyStatus != NotifierNotRegistered) {
- /* sorry, you can only have one notification registered at once */
- _SCErrorSet(kSCStatusNotifierActive);
- return FALSE;
- }
-
- status = task_for_pid(mach_task_self(), pid, &task);
- if (status != KERN_SUCCESS) {
- SC_log(LOG_ERR, "task_for_pid() failed: %s", mach_error_string(status));
- _SCErrorSet(status);
- return FALSE;
- }
-
-#ifdef VERBOSE_ACTIVITY_LOGGING
- os_activity_scope(storePrivate->activity);
-#endif // VERBOSE_ACTIVITY_LOGGING
-
- retry :
-
- status = notifyviasignal(storePrivate->server, task, sig, (int *)&sc_status);
-
- if (__SCDynamicStoreCheckRetryAndHandleError(store,
- status,
- &sc_status,
- "SCDynamicStoreNotifySignal notifyviasignal()")) {
- goto retry;
- }
-
- if (status != KERN_SUCCESS) {
- _SCErrorSet(status);
- return FALSE;
- }
-
- /* set notifier active */
- storePrivate->notifyStatus = Using_NotifierInformViaSignal;
-
- return TRUE;
-}