示例#1
0
void
Module::initialiseSchedulerFunctions()
{
   sActiveThreads = coreinit::internal::sysAlloc<OSThreadQueue>();
   OSInitThreadQueue(sActiveThreads);

   for (auto i = 0; i < 3; ++i) {
      sSchedulerEnabled[i] = true;
      sCurrentThread[i] = nullptr;
      sCoreRunQueue[i] = coreinit::internal::sysAlloc<OSThreadQueue>();
      OSInitThreadQueue(sCoreRunQueue[i]);
      sLastSwitchTime[i] = std::chrono::high_resolution_clock::now();
      sCorePauseTime[i] = std::chrono::time_point<std::chrono::high_resolution_clock>::max();
   }
}
示例#2
0
static void *gx_audio_init(const char *device, unsigned rate, unsigned latency)
{
   gx_audio_t *wa = (gx_audio_t*)memalign(32, sizeof(*wa));
   if (!wa)
      return NULL;

   gx_audio_data = (gx_audio_t*)wa;

   memset(wa, 0, sizeof(*wa));

   AIInit(NULL);
   AIRegisterDMACallback(dma_callback);

   if (rate < 33000)
   {
      AISetDSPSampleRate(AI_SAMPLERATE_32KHZ);
      g_settings.audio.out_rate = 32000;
   }
   else
   {
      AISetDSPSampleRate(AI_SAMPLERATE_48KHZ);
      g_settings.audio.out_rate = 48000;
   }

   OSInitThreadQueue(&wa->cond);

   wa->dma_write = BLOCKS - 1;
   DCFlushRange(wa->data, sizeof(wa->data));
   AIInitDMA((uint32_t)wa->data[wa->dma_next], CHUNK_SIZE);
   AIStartDMA();

   return wa;
}
示例#3
0
void
Module::initialiseAlarm()
{
   for (auto i = 0u; i < CoreCount; ++i) {
      OSInitAlarmQueue(sAlarmQueue[i]);
      OSInitAlarmQueue(sAlarmCallbackQueue[i]);
      OSInitThreadQueue(sAlarmCallbackThreadQueue[i]);
   }
}