kernel/eka/compsupp/symaehabi/symbian_support.h
changeset 266 0008ccd16016
parent 0 a41df078684a
equal deleted inserted replaced
259:57b9594f5772 266:0008ccd16016
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "ARM EABI LICENCE.txt"
     4 // under the terms of the License "ARM EABI LICENCE.txt"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // in kernel/eka/compsupp.
     6 // in kernel/eka/compsupp.
    67 struct emergency_eco {
    67 struct emergency_eco {
    68   __cxa_exception ep;
    68   __cxa_exception ep;
    69     XLeaveException aUserLeaveException;
    69     XLeaveException aUserLeaveException;
    70 };
    70 };
    71 
    71 
       
    72 
       
    73 
       
    74 #include "emergency_buffer.h"
       
    75 
       
    76 struct emergency_eco2 : emergency_eco {
       
    77   // The secondary emergency buffer might as well support slightly bigger objects.
       
    78   int spacer[6];
       
    79 };
       
    80 
       
    81 typedef TEmergencyBuffer<emergency_eco2, 2> TEmergencyBuffer2;
       
    82 
       
    83 
    72 struct emergency_buffer {
    84 struct emergency_buffer {
    73   bool inuse;
    85   bool inuse;
       
    86 
       
    87   TEmergencyBuffer2* em_buf2_p; // offset = 4, size = 4.
       
    88 
       
    89   // This field has always been forced to an 8-byte alignment, so the fact that
       
    90   // em_buf2_p has been added shouldn't break compatibility with existing binaries.
    74   struct emergency_eco eco;
    91   struct emergency_eco eco;
    75 };
    92 };
    76 
    93 
    77 
    94 
    78 class TCppRTExceptionsGlobals
    95 class TCppRTExceptionsGlobals
    79 	{
    96 	{
    80 public:
    97 public:
    81 	IMPORT_C TCppRTExceptionsGlobals();
    98 	IMPORT_C TCppRTExceptionsGlobals();
       
    99 public:
       
   100 	IMPORT_C void Init2ndEmergencyBuffer();
       
   101 	IMPORT_C void Kill2ndEmergencyBuffer();
    82 private:
   102 private:
    83 	__cxa_eh_globals thread_globals;
   103 	__cxa_eh_globals thread_globals;
    84 	emergency_buffer buffer;
   104 	emergency_buffer buffer;
    85 	};
   105 	};
    86 
   106