gecko-dev/dom/media/UnderrunHandler.h
Paul Adenot bb8066315b Bug 1575883 - Handle SIGXCPU in Gecko. r=kinetik,glandium
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
2019-10-11 16:02:36 +00:00

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_