Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/nsprpub/pr/src/md/unix/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  darwin.c   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "primpl.h"

#include <mach/mach_time.h>

void _MD_EarlyInit(void) {}

/*
 * The multiplier (as a fraction) for converting the Mach absolute time
 * unit to nanoseconds.
 */

static mach_timebase_info_data_t machTimebaseInfo;

void _PR_Mach_IntervalInit(void) {
  kern_return_t rv;

  rv = mach_timebase_info(&machTimebaseInfo);
  PR_ASSERT(rv == KERN_SUCCESS);
}

PRIntervalTime _PR_Mach_GetInterval(void) {
  uint64_t time;

  /*
   * mach_absolute_time returns the time in the Mach absolute time unit.
   * Convert it to milliseconds. See Mac Technical Q&A QA1398.
   */

  time = mach_absolute_time();
  time =
      time * machTimebaseInfo.numer / machTimebaseInfo.denom / PR_NSEC_PER_MSEC;
  return (PRIntervalTime)time;
/* _PR_Mach_GetInterval */

PRIntervalTime _PR_Mach_TicksPerSecond(void) { return 1000; }

PRWord* _MD_HomeGCRegisters(PRThread* t, int isCurrent, int* np) {
#if !defined(_PR_PTHREADS)
  if (isCurrent) {
    (void)setjmp(CONTEXT(t));
  }
  *np = sizeof(CONTEXT(t)) / sizeof(PRWord);
  return (PRWord*)CONTEXT(t);
#else
  *np = 0;
  return NULL;
#endif
}

#if !defined(_PR_PTHREADS)
void _MD_SET_PRIORITY(_MDThread* thread, PRUintn newPri) { return; }

PRStatus _MD_InitializeThread(PRThread* thread) { return PR_SUCCESS; }

PRStatus _MD_WAIT(PRThread* thread, PRIntervalTime ticks) {
  PR_ASSERT(!(thread->flags & _PR_GLOBAL_SCOPE));
  _PR_MD_SWITCH_CONTEXT(thread);
  return PR_SUCCESS;
}

PRStatus _MD_WAKEUP_WAITER(PRThread* thread) {
  if (thread) {
    PR_ASSERT(!(thread->flags & _PR_GLOBAL_SCOPE));
  }
  return PR_SUCCESS;
}

/* These functions should not be called for Darwin */
void _MD_YIELD(void) {
  PR_NOT_REACHED("_MD_YIELD should not be called for Darwin.");
}

PRStatus _MD_CREATE_THREAD(PRThread* thread, void (*start)(void*),
                           PRThreadPriority priority, PRThreadScope scope,
                           PRThreadState state, PRUint32 stackSize) {
  PR_NOT_REACHED("_MD_CREATE_THREAD should not be called for Darwin.");
  return PR_FAILURE;
}
#endif /* ! _PR_PTHREADS */

/* darwin.c */

Messung V0.5
C=91 H=100 G=95

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.