KAC done; ACID done
This commit is contained in:
parent
1bf89a2358
commit
e50281ca1f
6 changed files with 528 additions and 63 deletions
|
@ -0,0 +1,175 @@
|
|||
package konogonka.Controllers.NPDM;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.Separator;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import konogonka.Tools.NPDM.ACID.KernelAccessControlProvider;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class KernelAccessControlController {
|
||||
@FXML
|
||||
private VBox KACRawPane;
|
||||
|
||||
@FXML Label kFlagsAval,
|
||||
hiAllCpuId,
|
||||
loAllCpuId,
|
||||
hiAllThreadPrio,
|
||||
loAllThreadPrio;
|
||||
@FXML
|
||||
private VBox syscallMaskPane;
|
||||
|
||||
@FXML
|
||||
private VBox mapIoPane;
|
||||
|
||||
@FXML
|
||||
private Label mapNormalPageRwLbl;
|
||||
|
||||
@FXML
|
||||
private Label interruptPairAvalLbl,
|
||||
irq0Lbl,
|
||||
irq1Lbl;
|
||||
|
||||
@FXML
|
||||
private Label appTypeLbl,
|
||||
kerRelVerLbl,
|
||||
handleTableSizeLbl;
|
||||
|
||||
@FXML
|
||||
private Label dbgAvalLbl,
|
||||
canBeDbgLbl,
|
||||
canDbgLbl;
|
||||
|
||||
public void resetTab(){
|
||||
KACRawPane.getChildren().clear();
|
||||
kFlagsAval.setText("?");
|
||||
hiAllCpuId.setText("-");
|
||||
loAllCpuId.setText("-");
|
||||
hiAllThreadPrio.setText("-");
|
||||
loAllThreadPrio.setText("-");
|
||||
syscallMaskPane.getChildren().clear();
|
||||
mapIoPane.getChildren().clear();
|
||||
mapIoPane.getChildren().add(new Separator());
|
||||
mapNormalPageRwLbl.setText("-");
|
||||
interruptPairAvalLbl.setText("?");
|
||||
irq0Lbl.setText("-");
|
||||
irq1Lbl.setText("-");
|
||||
appTypeLbl.setText("-");
|
||||
kerRelVerLbl.setText("-");
|
||||
handleTableSizeLbl.setText("-");
|
||||
dbgAvalLbl.setText("?");
|
||||
canBeDbgLbl.setText("-");
|
||||
canDbgLbl.setText("-");
|
||||
}
|
||||
|
||||
public void populateFields(KernelAccessControlProvider kacProvider){
|
||||
resetTab();
|
||||
StringBuilder stringBuilder;
|
||||
for (Integer i: kacProvider.getRawData()){
|
||||
Label entry = new Label(String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0'));
|
||||
entry.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
KACRawPane.getChildren().add(entry);
|
||||
}
|
||||
if (kacProvider.isKernelFlagsAvailable()){
|
||||
kFlagsAval.setText("(available)");
|
||||
hiAllCpuId.setText(Integer.toString(kacProvider.getKernelFlagCpuIdHi()));
|
||||
loAllCpuId.setText(Integer.toString(kacProvider.getKernelFlagCpuIdLo()));
|
||||
hiAllThreadPrio.setText(Integer.toString(kacProvider.getKernelFlagThreadPrioHi()));
|
||||
loAllThreadPrio.setText(Integer.toString(kacProvider.getKernelFlagThreadPrioLo()));
|
||||
}
|
||||
else
|
||||
kFlagsAval.setText("(not available)");
|
||||
for (Map.Entry entry : kacProvider.getSyscallMasks().entrySet()) {
|
||||
byte[] maskBarr = (byte[]) entry.getValue();
|
||||
stringBuilder = new StringBuilder();
|
||||
for (byte b: maskBarr)
|
||||
stringBuilder.append(b);
|
||||
stringBuilder.reverse(); // Flip to show as is
|
||||
Label mask = new Label(stringBuilder.toString());
|
||||
Label maskTableIndex = new Label(((Byte) entry.getKey()).toString());
|
||||
|
||||
mask.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
maskTableIndex.setPadding(new Insets(5.0, 15.0, 5.0, 5.0));
|
||||
|
||||
syscallMaskPane.getChildren().add(new HBox(maskTableIndex, mask));
|
||||
}
|
||||
|
||||
for (Map.Entry entry : kacProvider.getMapIoOrNormalRange().entrySet()){
|
||||
byte[] altStPgNnumOfPg = (byte[]) entry.getKey();
|
||||
stringBuilder = new StringBuilder();
|
||||
for (byte b : altStPgNnumOfPg)
|
||||
stringBuilder.append(b);
|
||||
stringBuilder.reverse();
|
||||
|
||||
Label altStPgNnumOfPgLbl = new Label("Alternating start page and number of pages:");
|
||||
Label altStPgNnumOfPgVal = new Label(stringBuilder.toString());
|
||||
|
||||
Label roFlagLbl = new Label("Alternating read-only flag:");
|
||||
Label roFlagVal = new Label(((Boolean) entry.getValue()).toString());
|
||||
|
||||
altStPgNnumOfPgLbl.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
altStPgNnumOfPgVal.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
roFlagLbl.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
roFlagVal.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
|
||||
mapIoPane.getChildren().add(new HBox(altStPgNnumOfPgLbl, altStPgNnumOfPgVal));
|
||||
mapIoPane.getChildren().add(new HBox(roFlagLbl, roFlagVal));
|
||||
mapIoPane.getChildren().add(new Separator());
|
||||
}
|
||||
byte[] mapNormalPageRwBarr = kacProvider.getMapNormalPage();
|
||||
if (mapNormalPageRwBarr != null){
|
||||
stringBuilder = new StringBuilder();
|
||||
for (byte b : mapNormalPageRwBarr)
|
||||
stringBuilder.append(b);
|
||||
stringBuilder.reverse();
|
||||
|
||||
mapNormalPageRwLbl.setText(stringBuilder.toString());
|
||||
}
|
||||
if (kacProvider.isInterruptPairAvailable()){
|
||||
interruptPairAvalLbl.setText("(available)");
|
||||
stringBuilder = new StringBuilder();
|
||||
for (byte b : kacProvider.getIrq0())
|
||||
stringBuilder.append(b);
|
||||
stringBuilder.reverse();
|
||||
irq0Lbl.setText(stringBuilder.toString());
|
||||
|
||||
stringBuilder = new StringBuilder();
|
||||
for (byte b : kacProvider.getIrq1())
|
||||
stringBuilder.append(b);
|
||||
stringBuilder.reverse();
|
||||
irq1Lbl.setText(stringBuilder.toString());
|
||||
}
|
||||
else {
|
||||
interruptPairAvalLbl.setText("(not available)");
|
||||
}
|
||||
switch (kacProvider.getApplicationType()){
|
||||
case 0:
|
||||
appTypeLbl.setText(kacProvider.getApplicationType()+" (sysmodule)");
|
||||
break;
|
||||
case 1:
|
||||
appTypeLbl.setText(kacProvider.getApplicationType()+" (application)");
|
||||
break;
|
||||
case 2:
|
||||
appTypeLbl.setText(kacProvider.getApplicationType()+" (applet)");
|
||||
break;
|
||||
default:
|
||||
appTypeLbl.setText(kacProvider.getApplicationType()+" (???)");
|
||||
}
|
||||
|
||||
if (kacProvider.isKernelRelVersionAvailable())
|
||||
kerRelVerLbl.setText(kacProvider.getKernelRelVersionMajor()+"."+kacProvider.getKernelRelVersionMinor()+".0");
|
||||
|
||||
handleTableSizeLbl.setText(Integer.toString(kacProvider.getHandleTableSize())); // todo: validate if not null
|
||||
|
||||
if (kacProvider.isDebugFlagsAvailable()){
|
||||
dbgAvalLbl.setText("(available)");
|
||||
canBeDbgLbl.setText(Boolean.toString(kacProvider.isCanBeDebugged()));
|
||||
canDbgLbl.setText(Boolean.toString(kacProvider.isCanDebugOthers()));
|
||||
}
|
||||
else
|
||||
dbgAvalLbl.setText("(not available)");
|
||||
}
|
||||
}
|
|
@ -81,6 +81,9 @@ public class NPDMController implements ITabController {
|
|||
@FXML
|
||||
private ServiceAccessControlController ServiceAccessControlTableController;
|
||||
|
||||
@FXML
|
||||
private KernelAccessControlController KernelAccessControlTableController;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) { }
|
||||
|
||||
|
@ -168,6 +171,8 @@ public class NPDMController implements ITabController {
|
|||
FSAccessControlTableController.resetTab();
|
||||
|
||||
ServiceAccessControlTableController.resetTab();
|
||||
|
||||
KernelAccessControlTableController.resetTab();
|
||||
}
|
||||
private void setData(NPDMProvider npdmProvider, File file) {
|
||||
if (npdmProvider == null)
|
||||
|
@ -230,6 +235,6 @@ public class NPDMController implements ITabController {
|
|||
|
||||
FSAccessControlTableController.populateFields(acid.getFsAccessControlProvider());
|
||||
ServiceAccessControlTableController.populateFields(acid.getServiceAccessControlProvider().getCollection());
|
||||
|
||||
KernelAccessControlTableController.populateFields(acid.getKernelAccessControlProvider());
|
||||
}
|
||||
}
|
|
@ -1,26 +1,19 @@
|
|||
package konogonka.Controllers.NPDM;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class ServiceAccessControlController implements Initializable {
|
||||
public class ServiceAccessControlController {
|
||||
|
||||
@FXML
|
||||
private VBox SACPane;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
|
||||
}
|
||||
public void resetTab(){
|
||||
SACPane.getChildren().clear();
|
||||
}
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
package konogonka.Tools.NPDM.ACID;
|
||||
|
||||
import konogonka.LoperConverter;
|
||||
import konogonka.RainbowHexDump;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
/*
|
||||
NOTE: This implementation is extremely bad for using application as library. Use raw for own purposes.
|
||||
|
||||
NOTE:
|
||||
KAC is set of 4-byes blocks
|
||||
Consider them as uInt32 (Read as Little endian)
|
||||
|
@ -57,45 +56,66 @@ for (byte i = 0; i < 16; i++){
|
|||
|
||||
public class KernelAccessControlProvider {
|
||||
|
||||
private static final int KERNELFLAGS = 3;
|
||||
private static final int SYSCALLMASK = 4;
|
||||
private static final int MAPIOORNORMALRANGE = 6;
|
||||
private static final int MAPNORMALPAGE_RW = 7;
|
||||
private static final int INTERRUPTPAIR = 11;
|
||||
private static final int APPLICATIONTYPE = 13;
|
||||
private static final int KERNELRELEASEVERSION = 14;
|
||||
private static final int HANDLETABLESIZE = 15;
|
||||
private static final int DEBUGFLAGS = 16;
|
||||
private static final int KERNELFLAGS = 3,
|
||||
SYSCALLMASK = 4,
|
||||
MAPIOORNORMALRANGE = 6,
|
||||
MAPNORMALPAGE_RW = 7,
|
||||
INTERRUPTPAIR = 11,
|
||||
APPLICATIONTYPE = 13,
|
||||
KERNELRELEASEVERSION = 14,
|
||||
HANDLETABLESIZE = 15,
|
||||
DEBUGFLAGS = 16;
|
||||
|
||||
// RAW data
|
||||
private LinkedList<Integer> rawData;
|
||||
// Kernel flags
|
||||
private boolean kernelFlagsAvailable;
|
||||
private int kernelFlagCpuIdHi;
|
||||
private int kernelFlagCpuIdLo;
|
||||
private int kernelFlagThreadPrioHi;
|
||||
private int kernelFlagThreadPrioLo;
|
||||
// System Call Mask
|
||||
private int maskTableIndex;
|
||||
private int mask;
|
||||
|
||||
// Handle Table Size
|
||||
private int handleTableSize;
|
||||
private int kernelFlagCpuIdHi,
|
||||
kernelFlagCpuIdLo,
|
||||
kernelFlagThreadPrioHi,
|
||||
kernelFlagThreadPrioLo;
|
||||
// Syscall Masks as index | mask - order AS IS. [0] = bit5; [1] = bit6
|
||||
private LinkedHashMap<Byte, byte[]> syscallMasks; // Index, Mask
|
||||
// MapIoOrNormalRange
|
||||
private LinkedHashMap<byte[], Boolean> mapIoOrNormalRange; // alt page+num, RO flag
|
||||
// MapNormalPage (RW)
|
||||
private byte[] mapNormalPage; // TODO: clarify is possible to have multiple
|
||||
// InterruptPair
|
||||
private boolean interruptPairAvailable;
|
||||
private byte[] irq0,
|
||||
irq1;
|
||||
// Application type
|
||||
private int applicationType;
|
||||
// KernelReleaseVersion
|
||||
private boolean isKernelRelVersionAvailable;
|
||||
private int kernelRelVersionMajor,
|
||||
kernelRelVersionMinor;
|
||||
// Handle Table Size
|
||||
private int handleTableSize;
|
||||
// Debug flags
|
||||
private boolean debugFlagsAvailable;
|
||||
private byte canBeDebugged;
|
||||
private byte canDebugOthers;
|
||||
private boolean debugFlagsAvailable,
|
||||
canBeDebugged,
|
||||
canDebugOthers;
|
||||
|
||||
KernelAccessControlProvider(byte[] bytes) throws Exception{
|
||||
if (bytes.length < 4)
|
||||
throw new Exception("ACID-> KernelAccessControlProvider: too small size of the Kernel Access Control");
|
||||
|
||||
rawData = new LinkedList<Integer>();
|
||||
|
||||
syscallMasks = new LinkedHashMap<Byte, byte[]>();
|
||||
mapIoOrNormalRange = new LinkedHashMap<byte[], Boolean>();
|
||||
|
||||
int position = 0;
|
||||
// Collect all blocks
|
||||
for (int i = 0; i < bytes.length / 4; i++) {
|
||||
int block = LoperConverter.getLEint(bytes, position);
|
||||
byte[] blockBytes = Arrays.copyOfRange(bytes, position, position+4);
|
||||
position += 4;
|
||||
|
||||
rawData.add(block);
|
||||
|
||||
//RainbowHexDump.octDumpInt(block);
|
||||
|
||||
int type = getMinBitCnt(block);
|
||||
|
||||
switch (type){
|
||||
|
@ -105,56 +125,75 @@ public class KernelAccessControlProvider {
|
|||
kernelFlagCpuIdLo = block >> 16 & 0b11111111;
|
||||
kernelFlagThreadPrioHi = block >> 10 & 0b111111;
|
||||
kernelFlagThreadPrioLo = block >> 4 & 0b111111;
|
||||
System.out.println("KERNELFLAGS "+
|
||||
kernelFlagCpuIdHi+" "+
|
||||
kernelFlagCpuIdLo+" "+
|
||||
kernelFlagThreadPrioHi+" "+
|
||||
kernelFlagThreadPrioLo+"\n"
|
||||
);
|
||||
//System.out.println("KERNELFLAGS "+kernelFlagCpuIdHi+" "+kernelFlagCpuIdLo+" "+kernelFlagThreadPrioHi+" "+kernelFlagThreadPrioLo);
|
||||
break;
|
||||
case SYSCALLMASK:
|
||||
/*
|
||||
System.out.println("SYSCALLMASK\t\t"+block+" "+type);
|
||||
maskTableIndex = block >> 29;
|
||||
mask = block >> 5 & 0b11111111111111111111111;
|
||||
*/
|
||||
byte maskTableIndex = (byte) (block >> 29 & 0b111); // declared as byte; max value could be 7; min - 0;
|
||||
byte[] mask = new byte[24]; // Consider as bit.
|
||||
//System.out.println("SYSCALLMASK ind: "+maskTableIndex);
|
||||
|
||||
for (int k = 28; k >= 5; k--) {
|
||||
mask[k-5] = (byte) (block >> k & 1); // Only 1 or 0 possible
|
||||
//System.out.print(mask[k-5]);
|
||||
}
|
||||
//System.out.println();
|
||||
syscallMasks.put(maskTableIndex, mask);
|
||||
break;
|
||||
case MAPIOORNORMALRANGE:
|
||||
//System.out.println("MAPIOORNORMALRANGE\t\t"+block+" "+type);
|
||||
byte[] altStPgNPgNum = new byte[24];
|
||||
//System.out.println("MAPIOORNORMALRANGE Flag: "+((block >> 31 & 1) != 0));
|
||||
|
||||
for (int k = 30; k >= 7; k--){
|
||||
altStPgNPgNum[k-7] = (byte) (block >> k & 1); // Only 1 or 0 possible
|
||||
//System.out.print(altStPgNPgNum[k-7]);
|
||||
}
|
||||
mapIoOrNormalRange.put(altStPgNPgNum, (block >> 31 & 1) != 0);
|
||||
//System.out.println();
|
||||
break;
|
||||
case MAPNORMALPAGE_RW:
|
||||
//System.out.println("MAPNORMALPAGE_RW\t\t"+block+" "+type);
|
||||
|
||||
//System.out.println("MAPNORMALPAGE_RW\t");
|
||||
mapNormalPage = new byte[24];
|
||||
for (int k = 31; k >= 8; k--){
|
||||
mapNormalPage[k-8] = (byte) (block >> k & 1);
|
||||
//System.out.print(mapNormalPage[k-8]);
|
||||
}
|
||||
//System.out.println();
|
||||
break;
|
||||
case INTERRUPTPAIR:
|
||||
//System.out.println("INTERRUPTPAIR\t\t"+block+" "+type);
|
||||
|
||||
System.out.println("INTERRUPTPAIR found (must (?) appear once, please report if it's not)");
|
||||
interruptPairAvailable = true;
|
||||
irq0 = new byte[10];
|
||||
irq1 = new byte[10];
|
||||
for (int k = 21; k >= 12; k--)
|
||||
irq0[k-12] = (byte) (block >> k & 1);
|
||||
for (int k = 31; k >= 22; k--)
|
||||
irq1[k-22] = (byte) (block >> k & 1);
|
||||
break;
|
||||
case APPLICATIONTYPE:
|
||||
applicationType = block >> 14 & 0b111;
|
||||
System.out.println("APPLICATIONTYPE "+applicationType);
|
||||
//System.out.println("APPLICATIONTYPE "+applicationType);
|
||||
break;
|
||||
case KERNELRELEASEVERSION:
|
||||
//System.out.println("KERNELRELEASEVERSION\t"+block+" "+type);
|
||||
|
||||
//System.out.println("KERNELRELEASEVERSION\t"+(block >> 19 & 0b111111111111)+"."+(block >> 15 & 0b1111)+".X");
|
||||
isKernelRelVersionAvailable = true;
|
||||
kernelRelVersionMajor = (block >> 19 & 0b111111111111);
|
||||
kernelRelVersionMinor = (block >> 15 & 0b1111);
|
||||
break;
|
||||
case HANDLETABLESIZE:
|
||||
handleTableSize = block >> 16 & 0b1111111111;
|
||||
System.out.println("HANDLETABLESIZE "+handleTableSize);
|
||||
//System.out.println("HANDLETABLESIZE "+handleTableSize);
|
||||
break;
|
||||
case DEBUGFLAGS:
|
||||
debugFlagsAvailable = true;
|
||||
canBeDebugged = blockBytes[17];
|
||||
canDebugOthers = blockBytes[18];
|
||||
System.out.println("DEBUGFLAGS "+canBeDebugged+" "+canDebugOthers);
|
||||
canBeDebugged = (block >> 17 & 1) != 0;
|
||||
canDebugOthers = (block >> 18 & 1) != 0;
|
||||
//System.out.println("DEBUGFLAGS "+canBeDebugged+" "+canDebugOthers);
|
||||
break;
|
||||
default:
|
||||
//System.out.println("UNKNOWN\t\t"+block+" "+type);
|
||||
System.out.println("UNKNOWN\t\t"+block+" "+type);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
//System.out.println();
|
||||
}
|
||||
|
||||
private int getMinBitCnt(int value){
|
||||
|
@ -165,4 +204,24 @@ public class KernelAccessControlProvider {
|
|||
}
|
||||
return minBitCnt;
|
||||
}
|
||||
public LinkedList<Integer> getRawData() { return rawData; }
|
||||
public boolean isKernelFlagsAvailable() { return kernelFlagsAvailable; }
|
||||
public int getKernelFlagCpuIdHi() { return kernelFlagCpuIdHi; }
|
||||
public int getKernelFlagCpuIdLo() { return kernelFlagCpuIdLo; }
|
||||
public int getKernelFlagThreadPrioHi() { return kernelFlagThreadPrioHi; }
|
||||
public int getKernelFlagThreadPrioLo() { return kernelFlagThreadPrioLo; }
|
||||
public LinkedHashMap<byte[], Boolean> getMapIoOrNormalRange() { return mapIoOrNormalRange; }
|
||||
public byte[] getMapNormalPage() { return mapNormalPage; }
|
||||
public boolean isInterruptPairAvailable() { return interruptPairAvailable; }
|
||||
public byte[] getIrq0() { return irq0; }
|
||||
public byte[] getIrq1() { return irq1; }
|
||||
public int getApplicationType() { return applicationType; }
|
||||
public boolean isKernelRelVersionAvailable() { return isKernelRelVersionAvailable; }
|
||||
public int getKernelRelVersionMajor() { return kernelRelVersionMajor; }
|
||||
public int getKernelRelVersionMinor() { return kernelRelVersionMinor;}
|
||||
public int getHandleTableSize() { return handleTableSize; }
|
||||
public boolean isDebugFlagsAvailable() { return debugFlagsAvailable; }
|
||||
public boolean isCanBeDebugged() { return canBeDebugged; }
|
||||
public boolean isCanDebugOthers() { return canDebugOthers; }
|
||||
public LinkedHashMap<Byte, byte[]> getSyscallMasks() { return syscallMasks; }
|
||||
}
|
||||
|
|
232
src/main/resources/FXML/NPDM/KernelAccessControlTable.fxml
Normal file
232
src/main/resources/FXML/NPDM/KernelAccessControlTable.fxml
Normal file
|
@ -0,0 +1,232 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.Separator?>
|
||||
<?import javafx.scene.control.TitledPane?>
|
||||
<?import javafx.scene.layout.ColumnConstraints?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<VBox xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NPDM.KernelAccessControlController">
|
||||
<TitledPane text="Kernel Access Control">
|
||||
<VBox.margin>
|
||||
<Insets bottom="5.0" />
|
||||
</VBox.margin>
|
||||
<content>
|
||||
<VBox spacing="5.0">
|
||||
<children>
|
||||
<TitledPane animated="false" expanded="false" text="Kernel Access Control (RAW)">
|
||||
<content>
|
||||
<VBox fx:id="KACRawPane" />
|
||||
</content>
|
||||
</TitledPane>
|
||||
<HBox spacing="5.0">
|
||||
<children>
|
||||
<Label text="Kernel flags">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="kFlagsAval" text="?" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="200.0" minWidth="200.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="Highest allowed cpu id">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Lowest allowed cpu id" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Highest allowed thread prio" GridPane.rowIndex="2">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Lowest allowed thread prio" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="hiAllCpuId" text="-" GridPane.columnIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="loAllCpuId" text="-" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="hiAllThreadPrio" text="-" GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="loAllThreadPrio" text="-" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
</children>
|
||||
</GridPane>
|
||||
<Separator prefWidth="200.0" />
|
||||
<Label text=" Syscall Mask">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<HBox spacing="5.0">
|
||||
<children>
|
||||
<Label text="Indx" />
|
||||
<Label text="Mask" />
|
||||
</children>
|
||||
</HBox>
|
||||
<VBox fx:id="syscallMaskPane" />
|
||||
<Separator prefWidth="200.0" />
|
||||
<Label text="Map IO or normal range">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox fx:id="mapIoPane">
|
||||
<children>
|
||||
<Separator prefWidth="200.0" />
|
||||
</children></VBox>
|
||||
<Label text="Map normal page (RW)">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font></Label>
|
||||
<Label fx:id="mapNormalPageRwLbl" text="-" />
|
||||
<Separator prefWidth="200.0" />
|
||||
<HBox spacing="5.0">
|
||||
<children>
|
||||
<Label text="Interrupt pair">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="interruptPairAvalLbl" text="?" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="40.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="400.0" minWidth="300.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="Irq0">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Irq1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="irq0Lbl" text="-" GridPane.columnIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="irq1Lbl" text="-" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
</children>
|
||||
</GridPane>
|
||||
<Separator prefWidth="200.0" />
|
||||
<HBox spacing="5.0">
|
||||
<children>
|
||||
<Label text="Application Type:">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font></Label>
|
||||
<Label fx:id="appTypeLbl" text="-" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Separator prefWidth="200.0" />
|
||||
<Label text="Kernel release version">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font></Label>
|
||||
<Label fx:id="kerRelVerLbl" text="-" />
|
||||
<Separator prefWidth="200.0" />
|
||||
<Label text="Handle table size ">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font></Label>
|
||||
<Label fx:id="handleTableSizeLbl" text="-" />
|
||||
<Separator prefWidth="200.0" />
|
||||
<HBox spacing="5.0">
|
||||
<children>
|
||||
<Label text="Debug flags">
|
||||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label fx:id="dbgAvalLbl" text="?" />
|
||||
</children>
|
||||
</HBox>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="Can be debugged">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Can debug others" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="canBeDbgLbl" text="-" GridPane.columnIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="canDbgLbl" text="-" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
</children>
|
||||
</GridPane>
|
||||
<Separator prefWidth="200.0" />
|
||||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
</TitledPane>
|
||||
</VBox>
|
|
@ -1175,6 +1175,7 @@
|
|||
<Label text="*** Inside of ACID block" />
|
||||
<fx:include fx:id="FSAccessControlTable" source="FSAccessControlTable.fxml" />
|
||||
<fx:include fx:id="ServiceAccessControlTable" source="ServiceAccessControlTable.fxml" />
|
||||
<fx:include fx:id="KernelAccessControlTable" source="KernelAccessControlTable.fxml" />
|
||||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
|
|
Loading…
Reference in a new issue