IOGraphicsPrivate.h [plain text]
#ifndef _IOKIT_IOGRAPHICSPRIVATE_H
#define _IOKIT_IOGRAPHICSPRIVATE_H
#include <mach/vm_param.h>
#include <libkern/version.h>
#include <libkern/OSDebug.h>
#include <IOKit/IOLib.h>
#include <IOKit/graphics/IOGraphicsTypesPrivate.h>
#if 1
#define KPRINTF(_fmt_, vargs...) kprintf(_fmt_, ## vargs)
#else
#define KPRINTF(_fmt_, vargs...)
#endif
#define DEBG(name, fmt, args...) D(GENERAL, name, fmt, ##args)
#define DEBG1(name, fmt, args...) D(POWER, name, fmt, ##args)
#define DEBG2(name, fmt, args...) D(DISPLAY_WRANGLER, name, fmt, ##args)
#define D(categ, name, fmt, args...) do{}while(0)
#if DEBG_CATEGORIES_BUILD
#undef D
#define DC_BIT(categ) (1ull << DEBG_CATEGORY_##categ)
extern uint64_t gIOGraphicsDebugCategories;
typedef enum debg_category_t {
DEBG_CATEGORY_GENERAL = 0,
DEBG_CATEGORY_POWER = 1,
DEBG_CATEGORY_DISPLAY_WRANGLER = 2,
DEBG_CATEGORY_TIME = 3, DEBG_CATEGORY_NOTIFICATIONS = 4, DEBG_CATEGORY_MUX = 5,
DEBG_CATEGORY_DIM = 6,
} debg_category_t;
#define DEBG_CATEGORIES_RUNTIME_DEFAULT (-1ull & ~DC_BIT(NOTIFICATIONS))
#define D(categ, name, fmt, args...) \
do { \
if (!(gIOGraphicsDebugCategories & DEBG_CATEGORIES_BUILD & DC_BIT(categ))) \
{ \
continue; \
} \
AbsoluteTime DEBG_now; \
UInt64 DEBG_nano; \
AbsoluteTime_to_scalar(&DEBG_now) = mach_absolute_time(); \
absolutetime_to_nanoseconds(DEBG_now, &DEBG_nano); \
KPRINTF("%08d [%s]::%s" fmt, (uint32_t) (DEBG_nano / 1000000ull), name, \
__FUNCTION__, ## args); \
} while (false)
static inline void *OBFUSCATE(void *p)
{
vm_offset_t pcp;
vm_kernel_addrperm_external(reinterpret_cast<vm_offset_t>(p), &pcp);
return reinterpret_cast<void*>(pcp);
}
#define RLOG DEBG_CATEGORIES_BUILD
#define RLOG1 DEBG_CATEGORIES_BUILD // vestigial alias
#endif // DEBG_CATEGORIES_BUILD
#if __cplusplus >= 201103L
#define IOGRAPHICS_TYPEOF(_t_) decltype(_t_)
#else
#define IOGRAPHICS_TYPEOF(_t_) typeof(_t_)
#endif
#define STOREINC(_ptr_, _data_, _type_) { \
*((_type_ *)(_ptr_)) = _data_; \
_ptr_ = (IOGRAPHICS_TYPEOF(_ptr_)) (((char *) (_ptr_)) + sizeof(_type_)); \
}
#define kIOFBBootGrayValue 0x00bfbfbf
#define kIOFBGrayValue 0x00000000
#ifndef kAppleAudioVideoJackStateKey
#define kAppleAudioVideoJackStateKey "AppleAudioVideoJackState"
#endif
#ifndef kIOPMIsPowerManagedKey
#define kIOPMIsPowerManagedKey "IOPMIsPowerManaged"
#endif
#ifndef kIOAGPCommandValueKey
#define kIOAGPCommandValueKey "IOAGPCommandValue"
#endif
#ifndef kAppleClamshellStateKey
#define kAppleClamshellStateKey "AppleClamshellState"
#endif
#ifndef kIOFBWaitCursorFramesKey
#define kIOFBWaitCursorFramesKey "IOFBWaitCursorFrames"
#endif
#ifndef kIOFBWaitCursorPeriodKey
#define kIOFBWaitCursorPeriodKey "IOFBWaitCursorPeriod"
#endif
#ifndef kIOUserClientSharedInstanceKey
#define kIOUserClientSharedInstanceKey "IOUserClientSharedInstance"
#endif
#ifndef kIOHibernateOptionsKey
#define kIOHibernateOptionsKey "IOHibernateOptions"
#endif
#ifndef kIOHibernateGfxStatusKey
#define kIOHibernateGfxStatusKey "IOHibernateGfxStatus"
#endif
#ifndef kIOMessageSystemPagingOff
#define kIOMessageSystemPagingOff iokit_common_msg(0x255)
#endif
extern "C" ppnum_t pmap_find_phys(pmap_t map, addr64_t va);
extern "C" vm_map_t IOPageableMapForAddress( vm_address_t address );
extern bool gIOGraphicsSystemPower;
extern bool gIOFBSystemPower;
extern IOOptionBits gIOFBCurrentClamshellState;
extern const class OSSymbol * gIOFramebufferKey;
extern class OSData * gIOFBZero32Data;
extern class OSData * gIOFBOne32Data;
extern int32_t gIOFBHaveBacklight;
extern const OSSymbol * gIOFBPMSettingDisplaySleepUsesDimKey;
extern bool gIOGFades;
inline void bcopy_nc( void * from, void * to, UInt32 l) { bcopy( from, to, l ); }
inline void bzero_nc( void * p, UInt32 l ) { bzero( p, l ); }
#if VERSION_MAJOR < 9
#define getPowerState() pm_vars->myCurrentState
#endif
extern uint32_t gIOGDebugFlags;
enum {
kIOGDbgLidOpen = 0x00000001,
kIOGDbgVBLThrottle = 0x00000002,
kIOGDbgK59Mode = 0x00000004,
kIOGDbgDumbPanic = 0x00000008,
kIOGDbgVBLDrift = 0x00000010,
kIOGDbgForceBrightness = 0x00000020,
kIOGDbgFades = 0x00000040,
kIOGDbgFBRange = 0x00000080,
kIOGDbgForceLegacyMUXPreviewPolicy = 0x00000100,
kIOGDbgNoClamshellOffline = 0x00000200,
kIOGDbgNoWaitQuietController = 0x00000400,
kIOGDbgRemoveShutdownProtection = 0x00000800,
kIOGDbgDisableProbeAfterOpen = 0x00001000,
kIOGDbgEnableAutomatedTestSupport = 0x00010000,
kIOGDbgEnableGMetrics = 0x40000000,
kIOGDbgClamshellInjectionEnabled = 0x80000000,
};
extern uint64_t gIOGMetricsFlags;
enum {
kIOGMetrics_Enabled = 0x00000000000000000001ULL,
};
#if defined(_OPEN_SOURCE_) && !defined(kIOScreenLockStateKey)
#define IOHIB_PREVIEW_V0 1
enum { kIOPreviewImageCount = 1 };
struct hibernate_preview_t
{
uint32_t depth; uint32_t width; uint32_t height; };
typedef struct hibernate_preview_t hibernate_preview_t;
#define kIOScreenLockStateKey "IOScreenLockState"
#endif // _OPEN_SOURCE_ && !kIOScreenLockStateKey
struct IODisplayPMVars
{
UInt32 currentState;
unsigned long maxState;
unsigned long minDimState;
bool displayIdle;
};
#endif