mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-17 22:32:51 +00:00
![Paul Adenot](/assets/img/avatar_default.png)
This allows installing a SIGXCPU handler, which will simply set an atomic to true when reached. Another function allows querying this atomic. Finally, another function allows demoting the current thread from real-time priority. This is per-process currently, as there is only one audio callback thread that is set to RT scheduling per process, servicing all HTMLMediaElements and MSGs. Whenever any of those go over the soft limit, the thread is demoted. Differential Revision: https://phabricator.services.mozilla.com/D43404 --HG-- extra : moz-landing-system : lando
23 lines
970 B
C++
23 lines
970 B
C++
/* -*- Mode: C++; tab-width: 2; 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/. */
|
|
|
|
#ifndef MOZILLA_UNDERRUNHANDLER_H_
|
|
#define MOZILLA_UNDERRUNHANDLER_H_
|
|
|
|
namespace mozilla {
|
|
// Install an handler on SIGXPCU for the calling thread, that calls
|
|
// `UnderrunHandler` when the soft real-time limit has been reached. If a
|
|
// handler was already in place, this does nothing. No-op if not on Linux
|
|
// Desktop.
|
|
void InstallSoftRealTimeLimitHandler();
|
|
// Query whether or not the soft-real-time limit has been reached. Always
|
|
// false when not on Linux desktop. Can be called from any thread.
|
|
bool SoftRealTimeLimitReached();
|
|
// Set the calling thread to a normal scheduling class.
|
|
void DemoteThreadFromRealTime();
|
|
} // namespace mozilla
|
|
|
|
#endif // MOZILLA_UNDERRUNHANDLER_H_
|