Sockeye: Implement nodeSpec conversion
[barrelfish] / tools / sockeye / SockeyeASTDecodingNet.hs
1 {-
2   SockeyeASTDecodingNet.hs: Decoding net AST for Sockeye
3
4   Part of Sockeye
5
6   Copyright (c) 2017, ETH Zurich.
7
8   All rights reserved.
9
10   This file is distributed under the terms in the attached LICENSE file.
11   If you do not find this file, copies can be found by writing to:
12   ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
13   Attn: Systems Group.
14 -}
15
16 module SockeyeASTDecodingNet where
17
18 import Data.Map(Map)
19
20 type NetSpec = Map NodeId NodeSpec
21
22 data NodeId = NodeId
23     { namespace :: [String]
24     , name      :: !String
25     } deriving (Eq, Ord, Show)
26
27 data NodeSpec = NodeSpec
28     { nodeType  :: NodeType
29     , accept    :: [BlockSpec]
30     , translate :: [MapSpec]
31     , overlay   :: Maybe NodeId
32     } deriving (Show)
33
34 data NodeType
35     = Memory
36     | Device
37     | Other
38     deriving (Show)
39
40 data BlockSpec = BlockSpec
41     { base  :: Address
42     , limit :: Address
43     } deriving (Show)
44
45 data MapSpec = MapSpec
46     { srcBlock :: BlockSpec
47     , destNode :: NodeId
48     , destBase :: Address
49     } deriving (Show)
50
51 type Address = Word