kernel/eka/include/kernel/kern_priv.h
changeset 90 947f0dc9f7a8
parent 39 5d2844f35677
child 109 b3a1d9898418
--- a/kernel/eka/include/kernel/kern_priv.h	Tue Feb 02 01:24:03 2010 +0200
+++ b/kernel/eka/include/kernel/kern_priv.h	Fri Apr 16 16:24:37 2010 +0300
@@ -62,6 +62,9 @@
 #endif
 #endif
 
+// size of each buffer used to store entropy data before it is passed to the RNG
+const TUint KEntropyBufferSizeWords = 1024;// maximum size of 1024 words (32Kbit);
+
 const TInt KKernelServerDefaultPriority=16;
 const TInt KDefaultExitPriority=KKernelServerDefaultPriority;
 
@@ -543,6 +546,7 @@
 	TInt After(TInt aInterval, TTickCallBack aFunction, TRequestStatus& aStatus);
 	TInt At(const TTimeK& aTime, TSecondCallBack aFunction, TRequestStatus& aStatus);
 	TInt AfterHighRes(TInt aInterval, NTimerFn aFunction, TRequestStatus& aStatus);
+	TInt AgainHighRes(TInt aInterval, NTimerFn aFunction, TRequestStatus& aStatus);
 	TInt Inactivity(TInt aSeconds, TInactivityCallBack aFunction, TRequestStatus& aStatus);
 	void Cancel(DThread* aThread);
 	void Abort(DThread* aThread, TInt aTypeMask);
@@ -585,6 +589,7 @@
 	TInt At(TRequestStatus& aStatus, const TTimeK& aTime);
 	TInt Lock(TRequestStatus& aStatus, TTimerLockSpec aLock);
 	void HighRes(TRequestStatus& aStatus, TInt aInterval);
+	void AgainHighRes(TRequestStatus& aStatus, TInt aInterval);
 	TInt Inactivity(TRequestStatus& aStatus, TInt aSeconds);
 	void Abort(TBool aAbortAbsolute);
 	virtual TInt RequestUserHandle(DThread* aThread, TOwnerType aType);
@@ -2482,6 +2487,9 @@
 		ECodeSegRemoveAbsent=135,
 		EPhysicalPinObjectBad=136,
 		EShBufVirtualNotDefined=137,	//< A required virtual method is not present in a shared buffer derived class (internal error)
+		ESecureRNGInitializationFailed = 138,
+		ESecureRNGInternalStateNotSecure = 139,
+		ESecureRNGOutputsInBadState = 140,
 		
 		ESystemException=0x10000000,
 		ESoftwareWarmReset=0x10000001
@@ -2562,6 +2570,10 @@
 	static TKernelHookFn KernelHooks[ENumKernelHooks];
 	static TMiscNotifierMgr TheMiscNotifierMgr;
 	static TAny* VariantData[31];
+	static TUint32 EntropyBufferStatus[KMaxCpus];
+	static TUint32* EntropyBuffer[KMaxCpus];
+    static TUint32 TempEntropyBuffer[KEntropyBufferSizeWords];
+    static TDfc EntropyBufferDfc;
 public:
 	static TInt InitialiseMicrokernel();
 #ifdef __SMP__
@@ -2754,6 +2766,7 @@
 	static void Init2AP();
 #endif
 	static void Init3();
+	static void Init4();
 	static TInt InitSvHeapChunk(DChunk* aChunk, TInt aSize);
 	static TInt InitSvStackChunk();
 	static TBool IsRomAddress(const TAny* aPtr);