/**************************************************************************
* File name : StorageParameters.java
*
* This file is part a SCJ Level 0 and Level 1 implementation,
* based on SCJ Draft, Version 0.94 25 June 2013.
*
* It is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This SCJ Level 0 and Level 1 implementation is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this SCJ Level 0 and Level 1 implementation.
* If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2012
* @authors Anders P. Ravn, Aalborg University, DK
* Stephan E. Korsholm and Hans Søndergaard,
* VIA University College, DK
*************************************************************************/
package javax.safetycritical;
import javax.safetycritical.annotate.SCJAllowed;
/**
* @version 1.2; - December 2013
*
* @author Anders P. Ravn, Aalborg University,
* <A HREF="mailto:apr@cs.aau.dk">apr@cs.aau.dk</A>, <br>
* Hans Søndergaard, VIA University College, Denmark,
* <A HREF="mailto:hso@viauc.dk">hso@via.dk</A>
*
* @scjComment
* - The suggested arguments <code>messageLength</code> and <code>stackTraceLength</code>
* are vendor specific, thus might be included in <code>sizes</code>.
*/
@SCJAllowed
public final class StorageParameters extends javax.realtime.MemoryParameters {
long totalBackingStore;
long[] configurationSizes;
int messageLength;
int stackTraceLength;
long maxMissionMemory;
/**
*
* @param totalBackingStore size of the backing store reservation for
* worst-case scope usage by the associated <code> ManagedSchedulable</code> object, in bytes
*
* @param sizes is an array of parameters for configuring VM resources
* such as native stack or java stack size. The meanings of the entries
* in the array are vendor specific.
* The array passed in is not stored in the object. <p>
*/
@SCJAllowed
public StorageParameters(long totalBackingStore, long[] sizes,
int messageLength, int stackTraceLength, long maxMemoryArea,
long maxImmortal, long maxMissionMemory)
{
super (maxMemoryArea, maxImmortal);
this.totalBackingStore = totalBackingStore;
this.configurationSizes = sizes;
this.messageLength = messageLength;
this.stackTraceLength = stackTraceLength;
this.maxMissionMemory = maxMissionMemory;
}
/**
*
* @param totalBackingStore size of the backing store reservation for
* worst-case scope usage by the associated <code> ManagedSchedulable</code> object, in bytes
*
* @param sizes is an array of parameters for configuring VM resources
* such as native stack or java stack size. The meanings of the entries
* in the array are vendor specific.
* The array passed in is not stored in the object. <p>
*/
@SCJAllowed
public StorageParameters(long totalBackingStore, long[] sizes,
long maxMemoryArea, long maxImmortal, long maxMissionMemory)
{
super (maxMemoryArea, maxImmortal);
this.totalBackingStore = totalBackingStore;
this.configurationSizes = sizes;
this.messageLength = 0; // or a default value like 128?
this.stackTraceLength = 0; // or a default value ?
this.maxMissionMemory = maxMissionMemory;
}
long getMaxMemoryArea() {
return maxMemoryArea;
}
long getMaxImmortal() {
return maxImmortal;
}
//used in JML annotation only (not public)
long getBackingStoreSize() {
return totalBackingStore;
}
// //used in JML annotation only (not public)
// long[] getConfigurationSizes() {
// return configurationSizes;
// }
}