x86_64: make all targets compile
authorReto Achermann <reto.achermann@inf.ethz.ch>
Mon, 19 Aug 2019 12:30:08 +0000 (14:30 +0200)
committerReto Achermann <reto.achermann@inf.ethz.ch>
Tue, 20 Aug 2019 17:43:07 +0000 (19:43 +0200)
Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>

102 files changed:
hake/RuleDefs.hs
include/arch/x86_64/barrelfish/capabilities_arch.h
include/barrelfish/barrelfish.h
include/barrelfish/caddr.h
include/barrelfish/capabilities.h
include/barrelfish/core_state.h
include/barrelfish/cspace.h
include/barrelfish/dispatcher.h
include/barrelfish/idc.h
include/barrelfish/invocations.h
include/barrelfish/net_constants.h
include/barrelfish/notificator.h
include/barrelfish/pmap.h
include/barrelfish/pmap_ds.h
include/barrelfish/slot_alloc.h
include/barrelfish/static_assert.h
include/barrelfish/thread_sync.h
include/barrelfish/types.h
include/barrelfish_kpi/capabilities.h
include/barrelfish_kpi/cpu.h
include/barrelfish_kpi/dispatcher_shared.h
include/barrelfish_kpi/distcaps.h
include/barrelfish_kpi/domain_params.h
include/bitmacros.h
include/bitmap.h
include/net/net.h
include/octopus/pubsub.h
include/octopus/trigger.h
include/octopus_server/service.h
lib/ahci/storage_vsic.c
lib/barrelfish/idc_export.c
lib/barrelfish/slot_alloc/single_slot_alloc.c
lib/compiler-rt/test/Hakefile
lib/demandpaging/demandpaging.c
lib/lwip2/Hakefile
lib/lwip2/test/minimal/Hakefile
lib/msun/Hakefile
lib/net/net.c
lib/net/test/dhcp.c
lib/net/test/udp_echo.c
lib/net/test/udp_ping.c
lib/pager/pager.c
usr/bench/Hakefile
usr/bench/bulk_sdma/Hakefile
usr/bench/flounder_stubs/buffer.c
usr/bench/ipi_bench.c [deleted file]
usr/bench/loopy/loopy_driver.c
usr/bench/mdb_bench/frequency_bench.c
usr/bench/mem_appel/vmpup.c
usr/bench/net_latency/main.c
usr/bench/rcce/ipi_test/Hakefile
usr/bench/sdma_bench/Hakefile
usr/bench/udp_echo/Hakefile
usr/drivers/tulip/Hakefile [deleted file]
usr/drivers/tulip/main.c [deleted file]
usr/drivers/tulip/tulip.c [deleted file]
usr/drivers/tulip/tulip.h [deleted file]
usr/drivers/usb/usb_manager/Hakefile
usr/examples/xmpl-call-response/call-response.c
usr/examples/xmpl-rpc/rpc_msg.c
usr/examples/xmpl-rpc/rpc_rpc.c
usr/examples/xmpl-thc-lang/Hakefile
usr/gups/common.c
usr/mem_serv_dist/Hakefile
usr/mem_serv_dist/mem_bench.c
usr/mem_serv_dist/mem_bench_3.c
usr/mem_serv_dist/mem_bench_4.c
usr/mem_serv_dist/mem_bench_5.c
usr/mem_serv_dist/mem_bench_6.c
usr/mem_serv_dist/memtest_trace.h
usr/netfile/Hakefile
usr/netfile/netfile.c
usr/pixels/Hakefile [deleted file]
usr/pixels/pixels.c [deleted file]
usr/replay/master.c
usr/replay/slave.c
usr/tests/cxx/test_inc_barrelfish.cpp
usr/tests/e10ktest/Hakefile
usr/tests/flounderbootstrap/flounderbootstrap.c
usr/tests/mdbtests/test_ops_with_root.c
usr/tests/memtest/mem_free.c
usr/tests/msun/Hakefile
usr/tests/nested_paging_test/nestedpaging.c
usr/tests/net_tests/posix-sockets/main.c
usr/tests/nkm/debug.h
usr/tests/octopus/d2bench.c
usr/tests/octopus/d2bench1.c
usr/tests/octopus/d2bench2.c
usr/tests/octopus/d2pubsub.c
usr/tests/octopus/d2trigger.c
usr/tests/pagetable/protect.c
usr/tests/posixcompat/pthreads.c
usr/tests/terminalio/pty-test.c
usr/tests/vspace_tests/vspace_dump.c
usr/tests/xeon_phi_test/main_host.c
usr/tests/xomptest/Hakefile
usr/tests/xomptest/main.c
usr/tests/xomptest/main.cpp
usr/tests/xomptest/processing.c
usr/tests/xomptest/xomptest.h
usr/vnode_map_32/Hakefile [deleted file]
usr/vnode_map_32/vnode_map_32.c [deleted file]

index 614343f..a25b589 100644 (file)
@@ -24,6 +24,7 @@ import HakeTypes
 import qualified Args
 import qualified Config
 import TreeDB
+import Data.Char
 
 import Debug.Trace
 -- enable debug spew
@@ -904,7 +905,7 @@ sockeye2 net =
         ]
 
 sockeye2Lisa :: String -> HRule
-sockeye2Lisa net = 
+sockeye2Lisa net =
     let
         outFile = Out "" ("/platforms" </> net <.> ".lisa")
         inSgproj = "/socs" </> net <.> ".sgproj"
@@ -1316,7 +1317,7 @@ appGetOptionsForArch arch args =
 
 fullTarget :: Options -> String -> String -> HRule
 fullTarget opts arch appname =
-    Phony (arch ++ "_All") False
+    Phony ((map toUpper arch) ++ "_All") False
         [ Dep BuildTree arch (applicationPath opts appname) ]
 
 
@@ -1605,7 +1606,7 @@ platform name archs files docstr =
     Rules []
 
 --
--- Creates a 
+-- Creates a
 --
 armv7Image ::[Char] -> [Char] -> [Char] -> [Char] -> [[Char]]-> [[Char]]  -> HRule
 armv7Image target bootTarget cpuTarget physBase modules_generic modules =
@@ -1670,7 +1671,7 @@ armv8Image target menu bootTarget cpuTarget modules_generic modules =
             In BuildTree "armv8" "/tools/armv8_bootimage/efi_loader.o",
             Str "-o",
             Out "root" image_o,
-            Str "/usr/lib/libgnuefi.a", 
+            Str "/usr/lib/libgnuefi.a",
             Str "/usr/lib/libefi.a" ]),
         Rule ([ Str Config.aarch64_objcopy,
             Str "-O binary",
@@ -1690,7 +1691,7 @@ armv8EFIImage target menu bootTarget cpuTarget modules_generic modules =
         In BuildTree "root" ("/platforms/arm/menu.lst." ++ menu),
         Str Config.install_dir,
         Out "root" target_image
-        ] 
+        ]
         ++ [(Dep BuildTree "armv8" bootDriver)]
         ++ [(Dep BuildTree "armv8" cpuDriver)]
         ++ [(Dep BuildTree "armv8" f) | f <- modules ]
@@ -1747,16 +1748,16 @@ fvp_simargs imgpath = [
 
 
 -- Build buildpath/isim_system using the sgproj file
-fastmodel_sim_target :: RuleToken -> String -> [RuleToken] 
-fastmodel_sim_target sgproj buildpath= 
+fastmodel_sim_target :: RuleToken -> String -> [RuleToken]
+fastmodel_sim_target sgproj buildpath=
     let
         binary = buildpath </> "isim_system"
         build_dir = (Dep InstallTree "tools" (buildpath </> ".marker"))
     in
     [
-        Str ("ARM_FM_ROOT=" ++ Config.fastmodels_root), 
-        In SrcTree "src" "/tools/fastmodels/simgen", 
-        Str "--num-comps-file 50", 
+        Str ("ARM_FM_ROOT=" ++ Config.fastmodels_root),
+        In SrcTree "src" "/tools/fastmodels/simgen",
+        Str "--num-comps-file 50",
         Str "--gen-sysgen",
         Str "--build-directory",
         NoDep BuildTree "tools" buildpath,
@@ -1777,7 +1778,7 @@ boot_fastmodels_lisa :: String -> [ String ] -> String -> String -> (String -> [
 boot_fastmodels_lisa name archs img sims simargs docstr =
     let
         sgproj = In BuildTree "" ("/platforms" </> sims <.> ".sgproj")
-        -- We assume here that the  sgproj depends exactly on one lisa 
+        -- We assume here that the  sgproj depends exactly on one lisa
         -- file with the same base name
         lisaDep = Dep BuildTree "" ("/platforms" </> sims <.> ".lisa")
         buildpath = "/fastmodels" </> (sims ++ "_Build")
@@ -1790,7 +1791,7 @@ boot_fastmodels_lisa name archs img sims simargs docstr =
       in
         if null $ archs Data.List.\\ Config.architectures then
             Rules [
-            Rule $ [lisaDep] ++ fastmodel_sim_target sgproj buildpath, 
+            Rule $ [lisaDep] ++ fastmodel_sim_target sgproj buildpath,
             Phony name False boot_target,
             Phony "help-boot" True
             [ Str "@echo \"", NStr name, Str ":\\n\\t", NStr docstr, Str "\"",
@@ -1813,7 +1814,7 @@ boot_fastmodels_int name archs img sims sgproj simargs docstr =
   in
     if null $ archs Data.List.\\ Config.architectures then
         Rules [
-        Rule $ fastmodel_sim_target sgproj buildpath, 
+        Rule $ fastmodel_sim_target sgproj buildpath,
         Phony name False boot_target,
         Phony "help-boot" True
         [ Str "@echo \"", NStr name, Str ":\\n\\t", NStr docstr, Str "\"",
@@ -1859,11 +1860,11 @@ testJob name desc exec =
 
 scalebenchO :: String -> [String] -> [String] -> [RuleToken]
 scalebenchO buildType tests machines =
-    [ 
-       Str "mkdir", Str "-p", Str result_dir, NL, 
+    [
+       Str "mkdir", Str "-p", Str result_dir, NL,
        scalebenchProgLoc
     ] ++
-    test_tokens ++ 
+    test_tokens ++
     machine_tokens ++
     [
        Str "--debug"
@@ -1872,7 +1873,7 @@ scalebenchO buildType tests machines =
     [
        -- positional arguments
        Str Config.source_dir,          -- sourcedir
-       Str result_dir,             -- resultdir 
+       Str result_dir,             -- resultdir
        NL
     ]
     where
@@ -1885,4 +1886,4 @@ scalebenchO buildType tests machines =
 
 scalebench :: [String] -> [String] -> [RuleToken]
 scalebench = scalebenchO ""
-    
+
index 069ac0f..8a538d6 100644 (file)
@@ -40,11 +40,11 @@ static inline errval_t vnode_inherit_attr(struct capref dest, struct capref src,
     capaddr_t saddr = get_cap_addr(src);
 
     capaddr_t mcn[2*MCN_COUNT];
-    for (int i = 0; i < MCN_COUNT; i++) {
+    for (size_t i = 0; i < MCN_COUNT; i++) {
         mcn[i] = get_cap_addr(src_mapping_cn[i]);
         assert(get_cap_level(src_mapping_cn[i]) == CNODE_TYPE_OTHER);
     }
-    for (int i = 0; i < MCN_COUNT; i++) {
+    for (size_t i = 0; i < MCN_COUNT; i++) {
         mcn[MCN_COUNT+i] = get_cap_addr(dst_mapping_cn[i]);
         assert(get_cap_level(dst_mapping_cn[i]) == CNODE_TYPE_OTHER);
     }
@@ -52,4 +52,7 @@ static inline errval_t vnode_inherit_attr(struct capref dest, struct capref src,
     return invoke_vnode_inherit(dest, saddr, slevel, start, end, newflags, mcn);
 }
 
+
+__END_DECLS
+
 #endif //INCLUDEBARRELFISH_CAPABILITIES_ARCH_H
index 1ea67e0..471719c 100644 (file)
@@ -23,6 +23,8 @@
 #include <stdlib.h>
 #include <assert.h>
 
+#include <sys/cdefs.h>
+
 /* utility macros */
 #include <bitmacros.h>
 
@@ -53,6 +55,8 @@
 
 /* XXX: utility macros. not sure where to put these */
 
+__BEGIN_DECLS
+
 /* Duplicate memory */
 static inline void * memdup(const void *ptr, size_t size) {
     void *res = malloc(size);
@@ -61,11 +65,9 @@ static inline void * memdup(const void *ptr, size_t size) {
     return res;
 }
 
-/* XXX: glue junk for old IDC system, to be removed!! */
-
-void messages_wait_and_handle_next(void);
-void __attribute__((noreturn)) messages_handler_loop(void);
 
 typedef void *CONST_CAST;
 
+__END_DECLS
+
 #endif
index ce413a1..76d6d81 100644 (file)
@@ -110,12 +110,12 @@ extern struct capref cap_root, cap_monitorep, cap_irq, cap_io, cap_dispatcher,
 /**
  * \brief Returns the depth in the CSpace address of a cap
  */
-static inline uint8_t get_cap_level(struct capref cap)
+static inline  enum cnode_type get_cap_level(struct capref cap)
 {
     if (capref_is_null(cap)) {
-        return 0;
+        return (enum cnode_type)0;
     } else {
-        return cap.cnode.level + 1;
+        return (enum cnode_type)(cap.cnode.level + 1);
     }
 }
 
@@ -143,7 +143,7 @@ static inline capaddr_t get_cap_addr(struct capref cap)
  * \brief Returns the depth in the CSpace address of the CNode
  *        containing the given cap
  */
-static inline uint8_t get_cnode_level(struct capref cap)
+static inline enum cnode_type get_cnode_level(struct capref cap)
 {
     return cap.cnode.level;
 }
index e598c06..8a9d6a9 100644 (file)
@@ -43,7 +43,7 @@ errval_t cnode_create_from_mem(struct capref dest, struct capref src,
                                enum objtype cntype, struct cnoderef *cnoderef,
                                size_t slots);
 
-errval_t root_cnode_resize(struct capref new, struct capref ret);
+errval_t root_cnode_resize(struct capref cn, struct capref ret);
 
 errval_t cap_retype(struct capref dest_start, struct capref src, gensize_t offset,
                     enum objtype new_type, gensize_t objsize, size_t count);
@@ -68,7 +68,7 @@ struct lmp_endpoint;
 errval_t endpoint_create(size_t buflen, struct capref *retcap,
                          struct lmp_endpoint **retep);
 errval_t ump_endpoint_create(struct capref dest, size_t bytes);
-errval_t ump_endpoint_create_with_iftype(struct capref dest, size_t bytes, 
+errval_t ump_endpoint_create_with_iftype(struct capref dest, size_t bytes,
                                          uint16_t iftype);
 
 errval_t idcap_alloc(struct capref *dest);
@@ -93,10 +93,10 @@ cap_mint(struct capref dest, struct capref src, uint64_t param1, uint64_t param2
 {
     capaddr_t dcs_addr = get_croot_addr(dest);
     capaddr_t dcn_addr = get_cnode_addr(dest);
-    uint8_t dcn_level  = get_cnode_level(dest);
+    enum cnode_type dcn_level  = get_cnode_level(dest);
     capaddr_t scp_root = get_croot_addr(src);
     capaddr_t scp_addr = get_cap_addr(src);
-    uint8_t scp_level  = get_cap_level(src);
+    enum cnode_type scp_level  = get_cap_level(src);
 
     return invoke_cnode_mint(cap_root, dcs_addr, dcn_addr, dest.slot,
                              scp_root, scp_addr, dcn_level, scp_level,
@@ -121,9 +121,9 @@ vnode_map(struct capref dest, struct capref src, capaddr_t slot,
 
     capaddr_t sroot = get_croot_addr(src);
     capaddr_t saddr = get_cap_addr(src);
-    uint8_t slevel  = get_cap_level(src);
+    enum cnode_type slevel  = get_cap_level(src);
 
-    uint8_t mcn_level = get_cnode_level(mapping);
+    enum cnode_type mcn_level = get_cnode_level(mapping);
     capaddr_t mcn_addr = get_cnode_addr(mapping);
     capaddr_t mcn_root = get_croot_addr(mapping);
 
@@ -134,7 +134,7 @@ vnode_map(struct capref dest, struct capref src, capaddr_t slot,
 static inline errval_t vnode_unmap(struct capref pgtl, struct capref mapping)
 {
     capaddr_t mapping_addr = get_cap_addr(mapping);
-    uint8_t level = get_cap_level(mapping);
+     enum cnode_type level = get_cap_level(mapping);
 
     return invoke_vnode_unmap(pgtl, mapping_addr, level);
 }
@@ -150,8 +150,8 @@ vnode_copy_remap(struct capref dest, struct capref src, capaddr_t slot,
                  uint64_t attr, uint64_t off, uint64_t pte_count,
                  struct capref mapping)
 {
-     enum cnode_type slevel = get_cap_level(src);
-     capaddr_t saddr = get_cap_addr(src);
+    enum cnode_type slevel = get_cap_level(src);
+    capaddr_t saddr = get_cap_addr(src);
 
     enum cnode_type mcn_level = get_cnode_level(mapping);
     capaddr_t mcn_addr = get_cnode_addr(mapping);
@@ -173,8 +173,8 @@ static inline errval_t cap_copy(struct capref dest, struct capref src)
     capaddr_t dcn_addr = get_cnode_addr(dest);
     capaddr_t scp_root = get_croot_addr(src);
     capaddr_t scp_addr = get_cap_addr(src);
-    uint8_t dcn_level  = get_cnode_level(dest);
-    uint8_t scp_level  = get_cap_level(src);
+    enum cnode_type dcn_level  = get_cnode_level(dest);
+    enum cnode_type scp_level  = get_cap_level(src);
 
     err = invoke_cnode_copy(cap_root, dcs_addr, dcn_addr, dest.slot, scp_root,
                             scp_addr, dcn_level, scp_level);
@@ -184,7 +184,7 @@ static inline errval_t cap_copy(struct capref dest, struct capref src)
 static inline errval_t cap_get_state(struct capref cap, distcap_state_t *state)
 {
     capaddr_t caddr = get_cap_addr(cap);
-    uint8_t level = get_cap_level(cap);
+    enum cnode_type level = get_cap_level(cap);
 
     return invoke_cnode_get_state(cap_root, caddr, level, state);
 }
index 259a016..0b4beae 100644 (file)
 #include <barrelfish_kpi/capabilities.h>
 #include <barrelfish_kpi/init.h> // for CNODE_SLOTS_*
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 #define MAX_V2P_MAPPINGS        64
 
 struct v2pmap {
@@ -109,4 +113,6 @@ struct core_state_generic {
     struct skb_state skb_state;
 };
 
+__END_DECLS
+
 #endif
index 45c8ef8..f88e09b 100644 (file)
 
 #include <barrelfish_kpi/init.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 /* Root CNode */
 #define ROOTCN_FREE_SLOTS       (ROOTCN_SLOTS_USER+0)   ///< free slots to place EPs
 
@@ -32,4 +36,6 @@
 /* FIXME: Well know virtual addresses for some pages
    that can be mapped into user domain */
 
+__END_DECLS
+
 #endif // BARRELFISH_CSPACE_H
index 476c874..ab38423 100644 (file)
 #include <barrelfish/heap.h>
 #include <barrelfish/threads.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 struct lmp_chan;
 struct ump_chan;
 struct deferred_event;
@@ -93,7 +97,7 @@ struct dispatcher_generic {
 
     /// list of polled channels
     struct waitset_chanstate *polled_channels;
-    
+
     struct notificator *notificators;
 
     struct capref recv_slots[MAX_RECV_SLOTS];///< Queued cap recv slots
@@ -101,4 +105,6 @@ struct dispatcher_generic {
 
 };
 
+__END_DECLS
+
 #endif // BARRELFISH_DISPATCHER_H
index 3d649a7..823c0fc 100644 (file)
@@ -81,6 +81,13 @@ typedef enum idc_endpoint_flags {
 
 void idc_init(void);
 
+
+/* XXX: glue junk for old IDC system, to be removed!! */
+
+void messages_wait_and_handle_next(void);
+void __attribute__((noreturn)) messages_handler_loop(void);
+
+
 __END_DECLS
 
 #endif // BARRELFISH_IDC_H
index 39673c6..7a44cbf 100644 (file)
 #include <barrelfish/invocations_arch.h>
 #include <barrelfish/idc.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 static inline errval_t invoke_ram_noop(struct capref ram)
 {
     return cap_invoke1(ram, RAMCmd_Noop).error;
@@ -482,7 +486,7 @@ static inline errval_t invoke_irqsrc_get_vec_end(struct capref irqcap, uint64_t
 
 /**
  * Allocate a free entry in the vector table and return it as dest_cap.
- * Set vec_hint to a positive value, and the allocator will force 
+ * Set vec_hint to a positive value, and the allocator will force
  * that vector to be allocated.
  */
 static inline errval_t invoke_irqtable_alloc_dest_cap(struct capref irqcap,
@@ -537,4 +541,6 @@ static inline errval_t invoke_kernel_get_core_id(struct capref kern_cap,
     return sysret.error;
 }
 
+__END_DECLS
+
 #endif // INVOCATIONS_H
index d70a83a..7a56931 100644 (file)
 #ifndef LIBBARRELFISH_NETCONSTANTS_H
 #define LIBBARRELFISH_NETCONSTANTS_H
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 // *******************************************************************
 // net devices will export their service with following names
 // *******************************************************************
@@ -140,4 +144,6 @@ enum buffer_memory_types {
 
 #endif // CONFIG_QEMU_NETWORK
 
+__END_DECLS
+
 #endif // LIBBARRELFISH_NETCONSTANTS_H
index fabd0aa..da2b7e9 100644 (file)
@@ -6,6 +6,12 @@
 #include <barrelfish/barrelfish.h>
 #include <barrelfish/dispatch.h>
 
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+
 typedef bool (*check_notification_fn_type)(void *object);
 
 struct notificator
@@ -22,4 +28,6 @@ void notificator_init(struct notificator *notificator, void *object,
 
 void check_notificators_disabled(dispatcher_handle_t handle);
 
+__END_DECLS
+
 #endif
index a6f9916..6e60af1 100644 (file)
 
 #include <barrelfish/pmap_ds.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 struct pmap_dump_info;
 struct pmap;
 struct pmap_mapping_info;
@@ -144,4 +148,6 @@ void pmap_vnode_free(struct pmap *p, struct vnode *v);
  */
 errval_t pmap_refill_slabs(struct pmap *pmap, size_t max_slabs);
 
+__END_DECLS
+
 #endif // LIBBARRELFISH_PMAP_H
index c867cf1..80c172f 100644 (file)
 
 #include <barrelfish_kpi/paging_arch.h> // for PTABLE_ENTRIES
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 // amount of slabs which are provided in core_data struct for own pmap
 #define INIT_SLAB_COUNT 32
 
@@ -63,4 +67,6 @@ struct pmap_vnode_mgmt {
 #error Unknown Pmap datastructure.
 #endif
 
+__END_DECLS
+
 #endif // BARRELFISH_PMAP_DS_H
index f6e1ddc..23130d1 100644 (file)
@@ -83,7 +83,7 @@ errval_t single_slot_alloc_init_raw(struct single_slot_allocator *ret,
                                     cslot_t nslots, void *buf, size_t buflen);
 
 cslot_t single_slot_alloc_freecount(struct single_slot_allocator *s);
-errval_t single_slot_alloc_resize(struct single_slot_allocator *this,
+errval_t single_slot_alloc_resize(struct single_slot_allocator *sa,
                                   cslot_t newslotcount);
 
 errval_t two_level_slot_alloc_init(struct multi_slot_allocator *ret);
index 8a19cd5..984f498 100644 (file)
 #ifndef LIBBARRELFISH_STATIC_ASSERT_H
 #define LIBBARRELFISH_STATIC_ASSERT_H
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 /*
  * Variant based on Padraig Brady's implementation
  * http://www.pixelbeat.org/programming/gcc/static_assert.html
@@ -49,5 +53,8 @@
                   ASSERT_CONCAT("Offset mismatch:", field)      \
                  )
 
+
+__END_DECLS
+
 #endif // LIBBARRELFISH_STATIC_ASSERT_H
 
index 1dae232..1bda825 100644 (file)
 
 #include <barrelfish_kpi/spinlocks_arch.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 /// A thread of execution
 struct thread;
 
@@ -79,7 +83,9 @@ struct thread_barrier {
 #else
 #              define THREAD_BARRIER_INITIALIZER \
        { 0, 0, (struct thread_sem *) NULL, \
-         (struct thread_sem *) NULL, (struct thread_sem *) NULL }      
+         (struct thread_sem *) NULL, (struct thread_sem *) NULL }
 #endif
 
+__END_DECLS
+
 #endif
index 8044717..5dd5c6d 100644 (file)
 
 #include <barrelfish_kpi/types.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 /// Cycle count type
 #ifdef __i386__
 typedef uint64_t cycles_t; // rdtsc() is 64-bit on i386
@@ -85,4 +89,6 @@ typedef struct {
 #undef _DIVIDE_ROUND_UP_DEFINED
 #endif
 
+__END_DECLS
+
 #endif // TYPES_H
index 4e6908a..26dabf5 100644 (file)
 #include <stdbool.h>
 #include <barrelfish_kpi/types.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 #define CAPRIGHTS_READ          (1 << 0)
 #define CAPRIGHTS_WRITE         (1 << 1)
 #define CAPRIGHTS_EXECUTE       (1 << 2)
@@ -518,10 +522,10 @@ enum dispatcher_cmd {
     DispatcherCmd_SetupGuest,       ///< Set up the DCB of a guest domain
     DispatcherCmd_DumpPTables,      ///< Dump hw page tables of dispatcher
     DispatcherCmd_DumpCapabilities, ///< Dump capabilities of dispatcher
-    DispatcherCmd_Vmread,           ///< Execute vmread on the current and active VMCS      
+    DispatcherCmd_Vmread,           ///< Execute vmread on the current and active VMCS
     DispatcherCmd_Vmwrite,          ///< Execute vmwrite on the current and active VMCS
     DispatcherCmd_Vmptrld,          ///< Make VMCS clear and inactive
-    DispatcherCmd_Vmclear,          ///< Make VMCS current and active 
+    DispatcherCmd_Vmclear,          ///< Make VMCS current and active
 };
 
 /**
@@ -677,6 +681,8 @@ struct endpoint_identity {
     uint16_t   eptype; ///< type of the endpoint
 };
 
+__END_DECLS
+
 #endif // __ASSEMBLER__
 
 #endif // BARRELFISH_CAPABILITIES_H
index 33d8456..e344721 100644 (file)
 
 #ifndef __ASSEMBLER__
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 enum cpu_type {
     CPU_K1OM,
     CPU_X86_64,
@@ -47,7 +51,7 @@ static inline const char *cpu_type_to_archstr(enum cpu_type cpu_type)
 static inline const enum cpu_type archstr_to_cputype(char* archstr)
 {
     STATIC_ASSERT(CPU_TYPE_NUM == 5, "knowledge of all CPU types here");
-    
+
     if(strcmp("k1om", archstr) == 0) return CPU_K1OM;
     if(strcmp("x86_64", archstr) == 0) return CPU_X86_64;
     if(strcmp("x86_32", archstr) == 0) return CPU_X86_32;
@@ -56,6 +60,8 @@ static inline const enum cpu_type archstr_to_cputype(char* archstr)
     return CPU_TYPE_NUM;
 }
 
+__END_DECLS
+
 #endif
 
 // XXX: Code that needs these includes should includes should include it directly
index 93e8553..522bcf3 100644 (file)
 
 #include <barrelfish_kpi/dispatcher_handle.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 #define DISP_NAME_LEN   16
 
 enum task_type {
@@ -70,20 +74,21 @@ static inline void dump_dispatcher(struct dispatcher_shared_generic *disp)
     printf("Dump of dispatcher at address %p:\n", disp);
     printf("  disabled      = %d (%s)\n", disp->disabled, disp->disabled ? "RESUME" : "UPCALL" );
     printf("  haswork       = %d\n", disp->haswork );
-    printf("  udisp         = 0x%"PRIxLVADDR"\n", disp->udisp );
+    printf("  udisp         = 0x%" PRIxLVADDR "\n", disp->udisp );
     printf("  lmp_delivered = %d\n", disp->lmp_delivered );
     printf("  lmp_seen      = %d\n", disp->lmp_seen );
-    printf("  lpm_hint      = 0x%"PRIxLVADDR"\n", disp->lmp_hint );
-    printf("  dispatcher_run                = 0x%"PRIxLVADDR"\n", disp->dispatcher_run );
-    printf("  dispatcher_pagefault          = 0x%"PRIxLVADDR"\n", disp->dispatcher_pagefault );
-    printf("  dispatcher_pagefault_disabled = 0x%"PRIxLVADDR"\n", disp->dispatcher_pagefault_disabled );
-    printf("  dispatcher_trap               = 0x%"PRIxLVADDR"\n", disp->dispatcher_trap );
+    printf("  lpm_hint      = 0x%" PRIxLVADDR "\n", disp->lmp_hint );
+    printf("  dispatcher_run                = 0x%" PRIxLVADDR "\n", disp->dispatcher_run );
+    printf("  dispatcher_pagefault          = 0x%" PRIxLVADDR "\n", disp->dispatcher_pagefault );
+    printf("  dispatcher_pagefault_disabled = 0x%" PRIxLVADDR "\n", disp->dispatcher_pagefault_disabled );
+    printf("  dispatcher_trap               = 0x%" PRIxLVADDR "\n", disp->dispatcher_trap );
     printf("  systime      = 0x%" PRIuSYSTIME "\n", disp->systime );
     printf("  wakeup       = 0x%" PRIuSYSTIME "\n", disp->wakeup );
     printf("  name         = %.*s\n", DISP_NAME_LEN, disp->name );
     printf("  curr_core_id = 0x%" PRIxCOREID "\n", disp->curr_core_id );
 }
 
+__END_DECLS
 
 #endif //__ASSEMBLER__
 #endif // BARRELFISH_KPI_DISPATCHER_SHARED_H
index 78713bf..779d604 100644 (file)
 #include <stdint.h>
 #include <barrelfish_kpi/capabilities.h>
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 /*
  * capstate: locking and ownership
  */
@@ -126,4 +130,6 @@ distcap_is_moveable(enum objtype type)
 #define RRELS_ANCS_BIT (1<<1)
 #define RRELS_DESC_BIT (1<<2)
 
+__END_DECLS
+
 #endif
index ee62acf..43843d0 100644 (file)
 #ifndef SPAWN_DOMAIN_PARAMS_H
 #define SPAWN_DOMAIN_PARAMS_H
 
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
 struct spawn_domain_params {
     int argc;           ///< Number of arguments
     const char *argv[MAX_CMDLINE_ARGS + 1]; ///< Command-line arguments; +1 for NULL terminator
@@ -27,4 +31,6 @@ struct spawn_domain_params {
     size_t pagesize;            ///< the page size to be used (domain spanning)
 };
 
+__END_DECLS
+
 #endif // SPAWN_DOMAIN_PARAMS_H
index 9b33801..94ea452 100644 (file)
@@ -14,6 +14,9 @@
 
 #include <stdint.h>
 #include <sys/param.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
 
 /* A one-bit mask at bit n of type t */
 #define BIT_T(t, n) ((t)1 << (n))
@@ -63,4 +66,6 @@ log2ceil(uintptr_t num) {
     }
 }
 
+__END_DECLS
+
 #endif /* __BITMACROS_H */
index d8743e3..19b625c 100644 (file)
@@ -22,9 +22,9 @@
 #ifndef __BITMAP_H
 #define __BITMAP_H 1
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
 
 /*
  * Bitmap implementation
@@ -98,8 +98,6 @@ void bitmap_xor(struct bitmap *dst, const  struct bitmap *src);
 /* debug operations */
 void bitmap_dump(const struct bitmap *bm);
 
-#ifdef __cplusplus
-}
-#endif
+__END_DECLS
 
 #endif /* __BITMAP_H */
index a7905c3..e513d77 100644 (file)
@@ -90,7 +90,7 @@ errval_t networking_init_with_nic(const char *nic, net_flags_t flags);
  *
  * @return SYS_ERR_OK on success, errval on failure
  */
-errval_t networking_init_with_ep(const char *nic, struct capref ep, 
+errval_t networking_init_with_ep(const char *nic, struct capref ep,
                                  net_flags_t flags);
 
 /**
@@ -124,7 +124,7 @@ errval_t networking_poll(void);
  * @return SYS_ERR_OK on success, errval on failure
  */
 errval_t networking_create_queue(const char *cardname, struct capref* ep,
-                                 uint64_t* queueid, struct capref* filter_ep,   
+                                 uint64_t* queueid, struct capref* filter_ep,
                                  struct devq **retqueue);
 
 /**
index 83d23c5..c81fbd2 100644 (file)
 #define OCTOPUS_PUBSUB_H_
 
 #include <stdint.h>
+#include <octopus/getset.h>
 
 typedef uint64_t subscription_t;
-typedef void(*subscription_handler_fn)(octopus_mode_t mode, const char* record, void* state);
+typedef void(*subscription_handler_fn)(oct_mode_t mode, const char* record, void* state);
 
 errval_t oct_subscribe(subscription_handler_fn, const void*, subscription_t*,
         const char*, ...);
index a3a9d6d..109b42c 100644 (file)
 #include <barrelfish/barrelfish.h>
 
 #include <octopus/definitions.h>
+#include <octopus/getset.h>
 
 #define NOP_TRIGGER (octopus_trigger_t){ /*in_case*/ 0, /*send_to*/ 0, \
                                          /*m*/ 0, /*trigger*/ 0, /*st*/ 0 }
 
 #define TRIGGER_ALWAYS (OCT_PERSIST | OCT_ON_SET | OCT_ON_DEL | OCT_ALWAYS_SET)
 
-typedef void(*trigger_handler_fn)(octopus_mode_t mode, const char* record, void* state);
-octopus_trigger_t oct_mktrigger(errval_t, octopus_binding_type_t, octopus_mode_t,
+typedef void(*trigger_handler_fn)(oct_mode_t mode, const char* record, void* state);
+octopus_trigger_t oct_mktrigger(errval_t, octopus_binding_type_t, oct_mode_t,
         trigger_handler_fn, void*);
 errval_t oct_remove_trigger(octopus_trigger_id_t);
 errval_t oct_trigger_existing_and_watch(const char*,
index 09b028d..be1be1b 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <barrelfish/barrelfish.h>
 #include <octopus/definitions.h>
+#include <octopus/getset.h>
 
 struct oct_reply_state;
 
@@ -45,7 +46,7 @@ struct oct_reply_state {
     // Pubsub / Trigger state
     uint64_t client_handler;
     uint64_t client_state;
-    octopus_mode_t mode;
+    oct_mode_t mode;
     octopus_trigger_id_t server_id;
 
     // For capability storage
index 096f80d..cbe8694 100644 (file)
@@ -31,7 +31,7 @@ static errval_t vsic_write(struct storage_vsic *vsic, struct storage_vsa *vsa,
     struct ahci_vsic *mydata = vsic->data;
     errval_t status;
 
-    errval_t err = mydata->ata_rw28_rpc->rpc_tx_vtbl.
+    errval_t err = mydata->ata_rw28_rpc.rpc_tx_vtbl.
       write_dma(&mydata->ata_rw28_rpc, buffer, STORAGE_VSIC_ROUND(vsic, size),
                offset, &status);
     if (err_is_fail(err)) {
@@ -51,21 +51,18 @@ static errval_t vsic_read(struct storage_vsic *vsic, struct storage_vsa *vsa,
     assert(vsa != NULL);
     assert(buffer != NULL);
     struct ahci_vsic *mydata = vsic->data;
-    uint8_t *buf = NULL;
+    uint8_t buf[2048];
     size_t bytes_read, toread = STORAGE_VSIC_ROUND(vsic, size);
 
-    errval_t err = mydata->ata_rw28_rpc->rpc_tx_vtbl.
-      read_dma(&mydata->ata_rw28_rpc, toread, offset, &buf, &bytes_read);
+    errval_t err = mydata->ata_rw28_rpc.rpc_tx_vtbl.
+      read_dma(&mydata->ata_rw28_rpc, toread, offset, buf, &bytes_read);
     if (err_is_fail(err))
         USER_PANIC_ERR(err, "read_dma rpc");
-    if (!buf)
-        USER_PANIC("read_dma -> !buf");
     if (bytes_read != toread)
         USER_PANIC("read_dma -> read_size != size");
 
     // XXX: Copy from DMA buffer to user buffer
     memcpy(buffer, buf, size);
-    free(buf);
 
     return SYS_ERR_OK;
 }
@@ -77,7 +74,7 @@ static errval_t vsic_flush(struct storage_vsic *vsic, struct storage_vsa *vsa)
   struct ahci_vsic *mydata = vsic->data;
   errval_t outerr;
 
-  errval_t err = mydata->ata_rw28_rpc->rpc_tx_vtbl.
+  errval_t err = mydata->ata_rw28_rpc.rpc_tx_vtbl.
     flush_cache(&mydata->ata_rw28_rpc, &outerr);
   assert(err_is_ok(err));
 
@@ -132,11 +129,7 @@ static errval_t ahci_vsic_alloc(struct storage_vsic *vsic, uint8_t port)
         (struct ata_rw28_binding*)&mydata->ahci_ata_rw28_binding;
 
     // init RPC client
-    err = ata_rw28_binding_init(&mydata->ata_rw28_rpc,
-                                   mydata->ata_rw28_binding);
-    if (err_is_fail(err)) {
-        USER_PANIC_ERR(err, "ata_rw28_binding_init");
-    }
+    ata_rw28_rpc_client_init(mydata->ata_rw28_binding);
 
     // Init VSIC data structure
     vsic->ops = ahci_vsic_ops;
index 74db7a0..d599512 100644 (file)
@@ -129,6 +129,9 @@ errval_t idc_get_service(iref_t iref, struct idc_export **e)
         return err_push(err, LIB_ERR_EVENT_DISPATCH);
     }
     
+    if (err_is_fail(err)) {
+        DEBUG_ERR(mb->rx_union.get_service_id_reply.err, "idc get service");
+    }
     assert(err_is_ok(mb->rx_union.get_service_id_reply.err));
     assert(iref == mb->rx_union.get_service_id_reply.iref);
     assert(mb->rx_union.get_service_id_reply.service_id);
index cda6d0e..b1d4c65 100644 (file)
@@ -164,21 +164,21 @@ cslot_t single_slot_alloc_freecount(struct single_slot_allocator *this)
     return freecount;
 }
 
-errval_t single_slot_alloc_resize(struct single_slot_allocator *this,
+errval_t single_slot_alloc_resize(struct single_slot_allocator *sa,
                                   cslot_t newslotcount)
 {
     errval_t err;
 
 
-    if (newslotcount <= this->a.nslots) {
+    if (newslotcount <= sa->a.nslots) {
         debug_printf("%s: newcount = %"PRIuCSLOT", currcount = %"PRIuCSLOT"\n",
-                __FUNCTION__, newslotcount, this->a.nslots);
+                __FUNCTION__, newslotcount, sa->a.nslots);
         return SYS_ERR_OK;
     }
 
-    assert(newslotcount > this->a.nslots);
+    assert(newslotcount > sa->a.nslots);
 
-    cslot_t grow = newslotcount - this->a.nslots;
+    cslot_t grow = newslotcount - sa->a.nslots;
 
     // Refill slab allocator
     size_t bufgrow = SINGLE_SLOT_ALLOC_BUFLEN(grow);
@@ -186,16 +186,16 @@ errval_t single_slot_alloc_resize(struct single_slot_allocator *this,
     if (!buf) {
         return LIB_ERR_MALLOC_FAIL;
     }
-    slab_grow(&this->slab, buf, bufgrow);
+    slab_grow(&sa->slab, buf, bufgrow);
 
     // Update free slot metadata
-    err = free_slots(this, this->a.nslots, grow, &this->a.mutex);
+    err = free_slots(sa, sa->a.nslots, grow, &sa->a.mutex);
     if (err_is_fail(err)) {
         return err;
     }
 
     // Update generic metadata
-    this->a.nslots = newslotcount;
+    sa->a.nslots = newslotcount;
 
     return SYS_ERR_OK;
 }
@@ -220,7 +220,7 @@ errval_t single_slot_alloc_init_raw(struct single_slot_allocator *ret,
         // check for callers that do not provide enough buffer space
         #if !defined(NDEBUG)
         //on arm, __builtin_return_address does not take arguments !=0
-        #if !defined(__arm__) && !defined(__aarch64__) 
+        #if !defined(__arm__) && !defined(__aarch64__)
         size_t buflen_proper = SINGLE_SLOT_ALLOC_BUFLEN(nslots);
         if (buflen != buflen_proper) {
             debug_printf("******* FIXME: %s buflen=%zu != buflen_proper=%zu"
index 68afba0..a244997 100644 (file)
@@ -100,7 +100,6 @@ let
     "floatuntidf_test.c",
     "floatuntisf_test.c",
     "floatuntixf_test.c",
-    "gcc_personality_test.c",
     "gedf2vfp_test.c",
     "gesf2vfp_test.c",
     "getf2_test.c",
@@ -209,4 +208,21 @@ in [ build application {
         addIncludes = [
             "/lib/compiler-rt/builtins/"
         ]
-    } | f <- builtins_unittest_files, arch <- allArchitectures ]
+    } | f <- builtins_unittest_files, arch <- allArchitectures ]  ++ [
+
+    build application {
+      target = "compiler-rt/" ++ builtins_unittest_dir ++ "gcc_personality_test",
+        cxxFiles = ["gcc_personality_test_helper.cxx"],
+        cFiles = [ "gcc_personality_test.c" ],
+        addCFlags = arch_cFlags arch,
+        addLibraries = libDeps [
+            "compiler-rt",
+            "m"
+        ],
+        architectures = [
+            arch
+        ],
+        addIncludes = [
+            "/lib/compiler-rt/builtins/"
+        ]
+    } |  arch <- allArchitectures]
index 76a0069..3c5e7c8 100644 (file)
@@ -268,8 +268,7 @@ static errval_t handle_pagefault(lvaddr_t vaddr)
 }
 
 static void exn_handler(enum exception_type type, int subtype,
-                        void *addr, arch_registers_state_t *regs,
-                        arch_registers_fpu_state_t *fpuregs)
+                        void *addr, arch_registers_state_t *regs)
 {
     errval_t err;
     if (type == EXCEPT_PAGEFAULT) {
@@ -518,7 +517,7 @@ errval_t demand_paging_region_create(size_t bytes, size_t pagesize, size_t numfr
 
     debug_printf("FRAME BASE: %lx\n", id.base);
 
-    err = cap_retype(frames, frame, ObjType_Frame, pagebits);
+    err = cap_retype(frames, frame, 0, ObjType_Frame, pagesize, numframes);
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "cap retype\n");
     }
index c903262..18e9689 100644 (file)
@@ -14,7 +14,7 @@
 
 let
     subdirs = [ "src/core", "src/core/ipv4",  "src/netif",  "src/api" ]
-    
+
     srcs = concat [ find cInDir sd | sd <- subdirs ]
             ++ ["src/sys_arch.c", "src/barrelfish/pbuf_barrelfish.c" ]
     --   ++ [ "src/netif/bfeth.c", "src/netif/etharp.c", "src/sys_arch.c" ]
index 96a9d59..70aedc1 100644 (file)
@@ -16,5 +16,5 @@
                      --   "/lib/lwip2/src/apps/snmp_private_mib/lwip_prvmib.c",
                         "/lib/lwip2/src/apps/tcpecho_raw/tcpecho_raw.c",
                         "/lib/lwip2/src/apps/udpecho_raw/udpecho_raw.c" ],
-                      addLibraries = libDeps [ "lwip2" ]
+                      addLibraries = libDeps [ "lwip2", "net" ]
                     } ]
index 40636b7..e5fa279 100644 (file)
@@ -60,7 +60,8 @@ let
         "s_conj.c", "s_conjf.c", "s_conjl.c",
         "s_cproj.c", "s_cprojf.c", "s_creal.c", "s_crealf.c", "s_creall.c",
         "s_csinh.c", "s_csinhf.c", "s_ctanh.c", "s_ctanhf.c"]
-    ldbl_c = [ "e_acoshl.c", "e_acosl.c", "e_asinl.c", "e_atan2l.c", "e_atanhl.c",
+    ldbl_c = [
+        "e_acoshl.c", "e_acosl.c", "e_asinl.c", "e_atan2l.c", "e_atanhl.c",
         "e_coshl.c", "e_fmodl.c", "e_hypotl.c", "e_lgammal.c",
         "e_remainderl.c", "e_sinhl.c", "e_sqrtl.c",
         "s_asinhl.c", "s_atanl.c", "s_cbrtl.c", "s_ceill.c", "s_cosl.c", "s_cprojl.c",
@@ -72,7 +73,7 @@ let
     arm_c = [ "arm/fenv-softfp.c", "arm/fenv-vfp.c", "arm/fenv.c" ]
     x86_64_c = [ "amd64/fenv.c" ]
     x86_64_a = concat [ find sInDir "amd64" ]
-    
+
 in [
     build library {
         target = "m",
@@ -90,8 +91,8 @@ in [
                         "armv8" ->  aarch64_c)
                     ++ (case ldbl_prec arch of
                         53 -> []
-                        64 -> concat [ find sInDir "ld80" ]
-                        113 -> concat [ find sInDir "ld128" ])
+                        64 -> concat [ find cInDir "ld80" ]
+                        113 -> concat [ find cInDir "ld128" ])
                     ++ bsdcommon_c,
         addCFlags =  case arch of
                         "x86_64" ->  [ "-DLDBL_PREC=64" ]
index 42f95d9..a57d470 100644 (file)
@@ -82,7 +82,7 @@ static void net_loopback_poll(void *arg)
 void net_if_trigger_loopback(void)
 {
     errval_t err;
-    
+
     err = waitset_chan_trigger(&net_loopback_poll_channel);
     assert(err_is_ok(err));
 }
@@ -112,8 +112,8 @@ void net_lwip_timeout(void)
  *
  * @return SYS_ERR_OK on success, errval on failure
  */
-errval_t networking_create_queue(const char *cardname, struct capref* ep, 
-                                 uint64_t* queueid, struct capref* filter_ep, 
+errval_t networking_create_queue(const char *cardname, struct capref* ep,
+                                 uint64_t* queueid, struct capref* filter_ep,
                                  struct devq **retqueue)
 {
     struct net_state *st = get_default_net_state();
@@ -385,7 +385,7 @@ errval_t networking_init_with_nic(const char *nic, net_flags_t flags)
  *
  * @return SYS_ERR_OK on success, errval on failure
  */
-errval_t networking_init_with_ep(const char *nic, struct capref ep, 
+errval_t networking_init_with_ep(const char *nic, struct capref ep,
                                  net_flags_t flags)
 {
     errval_t err;
@@ -395,7 +395,7 @@ errval_t networking_init_with_ep(const char *nic, struct capref ep,
     st->cardname = nic;
 
     /* create the queue wit the given nic and card name */
-    err = networking_create_queue(nic, &ep, &st->queueid, &st->filter_ep, 
+    err = networking_create_queue(nic, &ep, &st->queueid, &st->filter_ep,
                                   &st->queue);
     if (err_is_fail(err)) {
         return err;
@@ -427,7 +427,7 @@ errval_t networking_init_default(void)
  */
 errval_t networking_poll(void)
 {
-    //return net_if_poll_all();    
+    //return net_if_poll_all();
     struct net_state *st = &state;
     return networking_poll_st(st);
 }
@@ -464,7 +464,7 @@ errval_t networking_install_ip_filter(bool tcp, struct in_addr *src,
     if (err_is_fail(err)) {
         return err;
     }
-    
+
     struct net_filter_ip ip = {
         .qid = state.queueid,
         .ip_src = (uint32_t) src->s_addr,
@@ -478,7 +478,7 @@ errval_t networking_install_ip_filter(bool tcp, struct in_addr *src,
     } else {
         ip.type = NET_FILTER_UDP;
     }
-    
+
     return net_filter_ip_install(st, &ip);
 }
 
@@ -514,7 +514,7 @@ errval_t networking_remove_ip_filter(bool tcp, struct in_addr *src,
     if (err_is_fail(err)) {
         return err;
     }
-    
+
     struct net_filter_ip ip = {
         .qid = state.queueid,
         .ip_src = (uint32_t) src->s_addr,
@@ -528,6 +528,6 @@ errval_t networking_remove_ip_filter(bool tcp, struct in_addr *src,
     } else {
         ip.type = NET_FILTER_UDP;
     }
-    
+
     return net_filter_ip_remove(st, &ip);
 }
index c8c1001..108d547 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * \file ping.c
- * \brief 
+ * \brief
  */
 
 
@@ -48,7 +48,8 @@ static int client_main(int argc, char *argv[])
 
     debug_printf("DHCP client main.\n");
 
-    err = dhcpd_query(0);
+    uint32_t gip;
+    err = net_config_current_ip_query(NET_FLAGS_DEFAULTS, &gip);
     assert(err_is_ok(err));
 
     debug_printf("DHCP client query init\n");
index 738ce25..2b35dd4 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * @brief 
+ * @brief
  *  udp_echo.c
  */
 
@@ -71,8 +71,8 @@ int main(int argc, char *argv[])
         return(r);
     }
 
-    err = networking_install_ip_filter(false, (ip_addr_t*) IP_ADDR_ANY, 
-                                       0, UDP_ECHOSERVER_PORT);    
+    struct in_addr ia = { INADDR_ANY };
+    err = networking_install_ip_filter(false, &ia, 0, UDP_ECHOSERVER_PORT);
     if (err_is_fail(err)) {
         USER_PANIC("Adding filter failed %s \n", err_getstring(err));
     }
index bf3d50b..7a756e3 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * \file ping.c
- * \brief 
+ * \brief
  */
 
 
@@ -199,8 +199,8 @@ int main(int argc, char *argv[])
 
     udp_recv(ping_pcb, ping_recv, NULL);
 
-    err = networking_install_ip_filter(false, (ip_addr_t*) IP_ADDR_ANY, 
-                                       0, UDP_ECHOSERVER_PORT);    
+    struct in_addr ia = { INADDR_ANY };
+    err = networking_install_ip_filter(false, &ia, 0, UDP_ECHOSERVER_PORT);
     if (err_is_fail(err)) {
         USER_PANIC("Adding filter failed %s \n", err_getstring(err));
     }
index e873323..a4662b5 100644 (file)
@@ -52,7 +52,7 @@ static errval_t handle_pagefault(void *addr)
             return SYS_ERR_OK;
         }
     } else {
-        printf("handle_pagefault: invalid access to %p (< 0x%x)\n", addr, VSPACE_BEGIN);
+        printf("handle_pagefault: invalid access to %p (< 0x%" PRIxLVADDR ")\n", addr, VSPACE_BEGIN);
         // TODO: good error code
         return LIB_ERR_PMAP_ADDR_NOT_FREE;
     }
index 70c5037..7a2d44e 100644 (file)
@@ -12,8 +12,6 @@
 
 [ build application { target = "bench", cFiles = [ "bench.c"] },
 
-  build application { target = "ipi_bench", cFiles = ["ipi_bench.c"] },
-
   build application { target = "stsc_bench",
                       cFiles = ["stsc_bench.c"],
                       addLibraries = [ "rcce" ],
index 98586df..8712131 100644 (file)
@@ -16,6 +16,7 @@ build application { target = "bulk_sdma",
                            flounderDefs = [ "omap_sdma" ],
                            flounderBindings = [ "omap_sdma" ],
                            flounderTHCStubs = [ "omap_sdma" ],
-                           addLibraries = [ "bench", "thc" ]
+                           addLibraries = [ "bench", "thc" ],
+                                       architectures = ["armv7"]
                   }
 ]
index cf25905..9da48f1 100644 (file)
@@ -74,18 +74,16 @@ static void fsb_init_msg(struct bench_binding *b, coreid_t id)
     experiment();
 }
 
-static void fsb_buffer_reply(struct bench_binding *b, uint8_t *payload, size_t size)
+static void fsb_buffer_reply(struct bench_binding *b, const uint8_t *payload, size_t size)
 {
     experiment();
-    free(payload);
 }
 
-static void fsb_buffer_request(struct bench_binding *b, uint8_t *payload, size_t size)
+static void fsb_buffer_request(struct bench_binding *b, const uint8_t *payload, size_t size)
 {
     errval_t err;
     err = b->tx_vtbl.fsb_buffer_reply(b, NOP_CONT, &buffer, 1);
     assert(err_is_ok(err));
-    free(payload);
 }
 
 static struct bench_rx_vtbl rx_vtbl = {
diff --git a/usr/bench/ipi_bench.c b/usr/bench/ipi_bench.c
deleted file mode 100644 (file)
index d77d625..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * \file
- * \brief User-space IPI Microbenchmark.
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <barrelfish/barrelfish.h>
-#include <barrelfish/sys_debug.h>
-
-#define ITERATIONS      100
-#define IPI_IRQ         18
-
-static int ipi_dest = 0;
-static bool is_starter = false;
-static bool ipi_seen = false;
-
-static void ipi_handler(void *arg)
-{
-    // consume IDC message
-    struct idc_recv_msg msg;
-    idc_endpoint_poll(arg, &msg, NULL);
-
-    // Wakeup benchmark thread
-    ipi_seen = true;
-
-    if(!is_starter) {
-        // Send interrupt further to dest
-        sys_debug_send_ipi(ipi_dest, 0, IPI_IRQ + 32);
-    }
-}
-
-static void benchmark(void)
-{
-    static uint64_t durations[ITERATIONS];
-    static uint64_t sendcost[ITERATIONS];
-
-    for(int i = 0; i < ITERATIONS; i++) {
-        uint64_t begin = rdtsc();
-        ipi_seen = false;
-        sys_debug_send_ipi(ipi_dest, 0, IPI_IRQ + 32);
-        uint64_t sent = rdtsc();
-        while (!ipi_seen) {
-            messages_wait_and_handle_next();
-        }
-        uint64_t end = rdtsc();
-        durations[i] = end - begin;
-        sendcost[i] = sent - begin;
-    }
-
-    uint64_t sumd = 0, sumcost = 0;
-    for(int i = 0; i < ITERATIONS; i++) {
-        printf("durations[%d] = %lu\n", i, durations[i]);
-        printf("sendcost[%d] = %lu\n", i, sendcost[i]);
-        sumd += durations[i];
-        sumcost += sendcost[i];
-    }
-
-    printf("Average IPI latency for %u tries: %lu ticks.\n",
-           ITERATIONS, (sumd / ITERATIONS) / 2);
-    printf("Average IPI send cost for %u tries: %lu ticks.\n",
-           ITERATIONS, sumcost / ITERATIONS);
-}
-
-static void victim(void)
-{
-    uint64_t tsc1, tsc2;
-    static uint64_t delay[ITERATIONS];
-    int i = 0;
-
-    tsc1 = rdtsc();
-    while (i < ITERATIONS) {
-        tsc2 = rdtsc();
-        if (tsc2 - tsc1 > 100) {
-            if (messages_handle_next_if_present() && ipi_seen) {
-                ipi_seen = false;
-                delay[i++] = tsc2 - tsc1;
-            }
-        }
-        tsc1 = tsc2;
-    }
-
-    uint64_t sum = 0;
-    for(i = 0; i < ITERATIONS; i++) {
-        printf("delay[%d] = %lu\n", i, delay[i]);
-        sum += delay[i];
-    }
-
-    printf("Average receiver delay for %u tries: %lu ticks.\n",
-           ITERATIONS, sum / ITERATIONS);
-}
-
-int main(int argc, char *argv[])
-{
-    bool run_victim = false;
-
-    // Register IRQ
-    USER_PANIC("irq_handle(IPI_IRQ, ipi_handler, NULL);");
-
-    for(int i = 1; i < argc; i++) {
-        if(!strncmp(argv[i], "dest=", 5)) {
-            ipi_dest = atoi(argv[i] + 5);
-        } else if(!strncmp(argv[i], "start", 5)) {
-            is_starter = true;
-        } else if(!strncmp(argv[i], "core=", 5)) {
-            // NOP
-        } else if(!strcmp(argv[i], "overhead")) {
-            run_victim = true;
-        } else {
-            printf("ignoring unknown option: %s\n", argv[i]);
-        }
-    }
-
-    if(is_starter) {
-        // Wait a little bit for all other domains to come up
-        for(int i = 0; i < 0xfffff; i++) {
-            thread_yield();
-        }
-
-        benchmark();
-    } else if (run_victim) {
-        victim();
-    } else {
-        // Hang around
-        messages_handler_loop();
-    }
-
-    return 0;
-}
index 85f09dc..f32ce61 100644 (file)
@@ -5,7 +5,7 @@
 #include <string.h>
 
 static int execute_program(coreid_t coreid, int argc, char *argv[],
-                           domainid_t *retdomainid)
+                           struct capref *retdomainid)
 {
     errval_t err;
 
@@ -30,7 +30,7 @@ static int execute_program(coreid_t coreid, int argc, char *argv[],
     return 0;
 }
 
-static uint8_t wait_domain_id(domainid_t domainid)
+static uint8_t wait_domain_id(struct capref domainid)
 {
     uint8_t exitcode;
     errval_t err = spawn_wait(domainid, &exitcode, false);
@@ -68,7 +68,7 @@ static void restart_core(void *arg)
         "update",
         corestr,
     };
-    domainid_t x86id;
+    struct capref x86id;
     debug_printf("restarting core %d\n", next_core);
     execute_program(disp_get_core_id(), 3, argv, &x86id);
     wait_domain_id(x86id);
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
     deferred_event_init(&myevent);
     // spawn loopy on fixed core
     char *loopy_argv[1] = { "loopy" };
-    domainid_t retid;
+    struct capref retid;
     execute_program(loopy_core, 1, loopy_argv, &retid);
 
     // 2: wait a bit
index a45de5c..d2404a3 100644 (file)
@@ -35,7 +35,7 @@ int main(int argc, char *argv[])
     errval_t err;
     coreid_t my_core_id = disp_get_current_core_id();
     for (int r = 0; r < run_rounds; r++) {
-        domainid_t domids[run_count];
+        struct capref domids[run_count];
         for (int c = 0; c < run_count; c++) {
             err = spawn_program(my_core_id, prog_to_run, prog_argv, NULL,
                     SPAWN_FLAGS_DEFAULT, &domids[c]);
index 1300aa0..3671b35 100644 (file)
@@ -353,8 +353,7 @@ uint64_t rdtsc(void)
 static void
 bf_handler(enum exception_type type, int subtype,
            void *vaddr,
-           arch_registers_state_t *regs,
-           arch_registers_fpu_state_t *fpuregs)
+           arch_registers_state_t *regs)
 {
     //debug_printf("got exception %d(%d) on %p\n", type, subtype, vaddr);
     assert(type == EXCEPT_PAGEFAULT);
@@ -382,7 +381,7 @@ int main(int argc, char **argv)
     if (pagesize == 2097152) {
         flags |= MAP_HUGETLB | MAP_HUGE_2MB;
     }
-    
+
     void* addr = 0x7fa400000000ULL;
     mem = mmap(addr, PAGES*pagesize, PROT_READ | PROT_WRITE, flags, -1, 0);
     if (mem==MAP_FAILED) {
index a2b6aeb..7000930 100644 (file)
@@ -38,7 +38,7 @@ static void start_run(uint8_t core, uint8_t memory, int payload, int nocache,
                       int read_incoming, int head_idx_wb)
 {
     errval_t r;
-    domainid_t new_domain;
+    struct capref new_domain;
     uint8_t code;
     char plsz[strlen("payload_size=0000") + 1];
     char noca[strlen("elb_nocache=0") + 1];
index cb26622..9ca4ea9 100644 (file)
 --
 --------------------------------------------------------------------------
 
-[ build application { target = "ipirc_test",
+[
+    {-
+    build application { target = "ipirc_test",
                       cFiles = [ "mainrc.c" ],
                       addLibraries = [ "rcce_nobulk" ],
                      flounderDefs = [ "rcce" ]
                     }
+    -}
 ]
index 66a1c46..d729da0 100644 (file)
@@ -16,6 +16,7 @@ build application { target = "sdma_bench",
                            flounderDefs = [ "omap_sdma" ],
                            flounderBindings = [ "omap_sdma" ],
                            flounderTHCStubs = [ "omap_sdma" ],
-                           addLibraries = [ "bench", "thc", "dist" ]
+                           addLibraries = [ "bench", "thc", "dist" ],
+                                       architectures = ["armv7"]
                   }
 ]
index a8f55fa..f65fad1 100644 (file)
 --
 --------------------------------------------------------------------------
 
-[ build application { target = "udpecho_e1000",
-                      cFiles = [ "udp_echo.c" ],
-                      addLibraries = libDeps [ "posixcompat", "lwip_arrakis", "e1000n", "lwip" ],
-                      mackerelDevices = [ "e10k" ],
-                      flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
-                    },
-  build application { target = "udpecho_e10kvf",
+[ {-
+    build application { target = "udpecho_e10kvf",
                       cFiles = [ "udp_echo.c" ],
                       addLibraries = libDeps [ "posixcompat", "lwip_arrakis", "e10k_vf", "lwip" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_e10k",
                       cFiles = [ "udp_echo.c" ],
                       addLibraries = libDeps [ "posixcompat", "lwip_arrakis", "e10k", "lwip" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_arranet_e10k_recvfrom",
                       cFiles = [ "udp_echo.c" ],
@@ -37,7 +31,7 @@
                       addCFlags = [ "-DARRANET_RECVFROM" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_arranet_e10kvf_recvfrom",
                       cFiles = [ "udp_echo.c" ],
                       addCFlags = [ "-DARRANET_RECVFROM" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
-                    },
-  build application { target = "udpecho_arranet_e1000_recvfrom",
-                      cFiles = [ "udp_echo.c" ],
-                      addLibraries = libDeps [ "posixcompat", "arranet", "e1000n", "lwip" ],
-                      addCFlags = [ "-DARRANET_RECVFROM" ],
-                      mackerelDevices = [ "e10k" ],
-                      flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_arranet_e10k",
                       cFiles = [ "udp_echo.c" ],
                       addLibraries = libDeps [ "posixcompat", "arranet", "e10k", "lwip" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_arranet_e10kvf",
                       cFiles = [ "udp_echo.c" ],
                       addLibraries = libDeps [ "posixcompat", "arranet", "e10k_vf", "lwip" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
+                    }
+build application { target = "udpecho_e1000",
+                      cFiles = [ "udp_echo.c" ],
+                      addLibraries = libDeps [ "posixcompat", "lwip_arrakis", "e1000n", "lwip" ],
+                      mackerelDevices = [ "e10k" ],
+                      flounderDefs = [ "net_queue_manager" ],
+                      architectures = [ "x86_64" ]
+                    },
+  build application { target = "udpecho_arranet_e1000_recvfrom",
+                      cFiles = [ "udp_echo.c" ],
+                      addLibraries = libDeps [ "posixcompat", "arranet", "e1000n", "lwip" ],
+                      addCFlags = [ "-DARRANET_RECVFROM" ],
+                      mackerelDevices = [ "e10k" ],
+                      flounderDefs = [ "net_queue_manager" ],
+                      architectures = [ "x86_64" ]
                     },
   build application { target = "udpecho_arranet_e1000",
                       cFiles = [ "udp_echo.c" ],
                       addLibraries = libDeps [ "posixcompat", "arranet", "e1000n", "lwip" ],
                       mackerelDevices = [ "e10k" ],
                       flounderDefs = [ "net_queue_manager" ],
-                      architectures = [ "x86_64", "x86_32" ]
+                      architectures = [ "x86_64" ]
                     }
+-}
 ]
diff --git a/usr/drivers/tulip/Hakefile b/usr/drivers/tulip/Hakefile
deleted file mode 100644 (file)
index a949e19..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---------------------------------------------------------------------------
--- Copyright (c) 2007-2009,2012, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
---
--- Hakefile for /usr/drivers/tulip
---
---------------------------------------------------------------------------
-
-[ build application { target = "tulip",
-                      cFiles = [ "tulip.c" ],
-                      flounderBindings = [ "net_queue_manager",
-                                            "net_soft_filters" ],
-                      mackerelDevices = [ "tulip" ],
-                      addLibraries = libDeps [ "pci", "netQmng", "lwip" ]
-           }
-]
diff --git a/usr/drivers/tulip/main.c b/usr/drivers/tulip/main.c
deleted file mode 100644 (file)
index b409f0a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * \file
- * \brief Serial port driver.
- */
-
-/*
- * Copyright (c) 2007, 2008, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <barrelfish/barrelfish.h>
-
-#include "tulip.h"
-
-void lwip_demo(void);
-void tcp_server(void);
-
-int main(int argc, char *argv[])
-{
-    int r;
-
-    TU_DEBUG("tulip: entered\n");
-
-    // Initialize hardware
-    struct pci_address ad = {
-        .bus = 0,
-        .device = 10, // XXX NASTY HACK
-        .function = 0,
-    };
-
-    // XXX: Hack to get driver to work without pci domain
-    TU_DEBUG("tulip: writing conf header\n");
-    pci_write_conf_header(&ad, BAR_OFFSET, PORTBASE | 0x1);
-
-    r = tulip_initialize_card(&ad);
-    assert(r == 0);
-
-    // XXX: Do some fancy lwip stuff
-    // lwip_demo();
-    tcp_server();
-
-    thread_exit(0);
-    assert(!"thread_exit returned");
-    return EXIT_FAILURE;
-}
diff --git a/usr/drivers/tulip/tulip.c b/usr/drivers/tulip/tulip.c
deleted file mode 100644 (file)
index 6b0713b..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-/** \file
- * \brief DEC Tulip ethernet driver
- *
- * This file is a driver for the Tulip Ethernet controller
- */
-
-/*
- * Copyright (c) 2007, 2008, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <barrelfish/barrelfish.h>
-#include <dev/tulip_dev.h>
-#include <pci/pci.h>
-#include <net_queue_manager/net_queue_manager.h>
-#include <lwip/inet.h>
-
-#include "tulip.h"
-
-#define BAR_OFFSET 4
-#define PCI_CONFIG_HDR_CFIT     0x3c
-
-#define REGISTER_SIZE uint32_t
-REGISTER_SIZE * volatile pciconfig;
-// XXX Should use Mackerel PCI:  static struct pci_hdr0_t config;
-
-static struct tulip_t csrs;
-static uint8_t mac_address[6];
-
-#define BYTES_PER_FRAME      1536
-
-// XXX PBAR FIXME!
-// XXX PBAR Buffer allocation code doesn't deal with >1 page properly!
-#define RX_FRAGMENTS  1
-#define TX_FRAGMENTS  1
-
-#define RX_BUFSIZE 4096 // (RX_FRAGMENTS * (tulip_TDES_size+BYTES_PER_FRAME))
-#define TX_BUFSIZE 4096 // (TX_FRAGMENTS * (tulip_TDES_size+BYTES_PER_FRAME))
-
-#define DESCRIPTOR_OFFSET(d) ((d)*tulip_TDES_size)
-#define BUFFER_OFFSET(b,n) (((n)*tulip_TDES_size + (b)*BYTES_PER_FRAME))
-
-struct capref rxcap, txcap;
-static uint8_t *volatile rxbufs;
-static uint8_t *volatile txbufs;
-
-#define RXDESC_AT(_o) ((tulip_RDES_t)(rxbufs + ((_o)*tulip_RDES_size)))
-#define TXDESC_AT(_o) ((tulip_TDES_t)(txbufs + ((_o)*tulip_TDES_size)))
-
-#ifdef TULIP_TU_DEBUG
-static void print_csrs(void)
-{
-    char buf[4096];
-    if (tulip_pr(buf, 4095, &csrs) < 4095) {
-       printf("Not enough buffer to print registers: edit %s line %d",
-              __FILE__, __LINE__ -2);
-    } else {
-       printf("%s\n", buf);
-    }
-}
-static void dump_pkt(uint8_t *pkt, uint32_t len)
-{
-    for (int i = 0; i < len; i++) {
-        printf("%02x", pkt[i]);
-    }
-    printf("\n");
-}
-#endif
-
-//
-// SROM related methods
-//
-static void delay(int kernel_ticks)
-{
-    // kernel ticks in units of 100ns
-    // spin until delay elapsed
-}
-
-static uint8_t srom_read_preamble[] = {
-    0x01, 0x31, 0x57, 0x57, 0x51, 0x31
-};
-
-static uint16_t srom_read16(uint32_t addr, uint32_t addrBits)
-{
-    int i;
-    tulip_CSR9_t csr9 = tulip_CSR9_initial;
-    csr9 = tulip_CSR9_DATA_insert(csr9, 0);
-    csr9 = tulip_CSR9_SR_insert(csr9, 1);
-    csr9 = tulip_CSR9_RD_insert(csr9, 1);
-
-    // This is taken from section 7-8 in 21140A reference manual. We
-    // deliberately make all delays as 3 ticks since we don't have
-    // sufficient resolution and don't care about 300ns vs 150ns for
-    // the SROM accesses.
-
-    //uint32_t srom_base_cmd = 0x4800;
-
-    // Starting byte address to starting word address
-    addr >>= 1;
-
-    for (i = 0; i < sizeof(srom_read_preamble); i++)
-    {
-        uint8_t b = srom_read_preamble[i];
-       // srom_base_cmd | (uint32_t)(b >> 4));    delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, b >> 4);
-        tulip_CSR9_wr(&csrs, csr9);
-       // srom_base_cmd | (uint32_t)(b & 0x0f));  delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, b & 0x0f);
-        tulip_CSR9_wr(&csrs, csr9);
-    }
-
-    // Write address to be read
-    for (i = (int)addrBits - 1; i >= 0; --i)
-    {
-        uint32_t bit = (addr >> i) & 0x01;
-        bit <<= 2;
-        
-       csr9 = tulip_CSR9_DATA_insert(csr9, bit | 0x01);
-        tulip_CSR9_wr(&csrs, csr9); // srom_base_cmd | bit | 0x01);
-        delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, bit | 0x03);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | bit | 0x03);
-        delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, bit | 0x01);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | bit | 0x01);
-        delay(3);
-    }
-
-    // Get lsb
-    uint32_t r = 0;
-    for (i = 7; i >= 0; --i)
-    {
-       csr9 = tulip_CSR9_DATA_insert(csr9, 0x03);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | 0x03);
-        delay(3);
-        r |= ((tulip_CSR9_DATA_rdf(&csrs) & 0x08) >> 3) << i;
-        delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, 0x01);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | 0x01);
-        delay(3);
-    }
-
-    // Get msb
-    for (i = 15; i >= 8; --i)
-    {
-       csr9 = tulip_CSR9_DATA_insert(csr9, 0x03);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | 0x03);
-        delay(3);
-        r |= ((tulip_CSR9_DATA_rdf(&csrs) & 0x08) >> 3) << i;
-        delay(3);
-       csr9 = tulip_CSR9_DATA_insert(csr9, 0x01);
-        tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd | 0x01);
-        delay(3);
-    }
-
-    // Finish up
-    csr9 = tulip_CSR9_DATA_insert(csr9, 0x00);
-    tulip_CSR9_wr(&csrs, csr9); //srom_base_cmd);
-    delay(3);
-
-    return (uint16_t)r;
-}
-
-static int get_srom_width(void)
-{
-    for (uint32_t i = 6; i < 13; i++)
-    {
-        uint16_t w = srom_read16(18u, i);
-        if (w == 0)
-        {
-            return i - 1;
-        }
-    }
-    return 6;
-}
-
-
-static uint8_t *read_srom(void)
-{
-    int srom_width = get_srom_width();
-    TU_DEBUG("srom_width=%d\n", srom_width);
-    
-    int len = 2 << (int)srom_width;
-    TU_DEBUG("malloc %d\n", len);
-    //breakpoint();
-    uint8_t *b = malloc(len);
-    TU_DEBUG("done %p\n", b);
-    for (int i = 0; i < len; i += 2)
-    {
-        uint16_t w = srom_read16(i, srom_width);
-        b[i]     = (uint8_t) (w >> 8);
-        b[i + 1] = (uint8_t) (w & 0xff);
-        if (0) TU_DEBUG("%02x%02x", b[i], b[i+1]);
-    }
-    TU_DEBUG("\n");
-    return b;
-}
-
-static void *contig_alloc(size_t bufsize, lpaddr_t *pa)
-{
-    struct capref frame;
-    errval_t r;
-    void *va;
-
-    // Allocate
-    r = frame_alloc(&frame, bufsize, &bufsize);
-    if (err_is_fail(r)) {
-        TU_DEBUG(r, "frame_alloc");
-        return NULL;
-    }
-    
-    r = vspace_map_one_frame_attr(&va, bufsize, frame,
-                                 VREGION_FLAGS_READ_WRITE, NULL, NULL);
-    if (err_is_fail(r)) {
-        TU_DEBUG(r, "vspace_map_one_frame_attr");
-        return NULL;
-    }
-    return va;
-}
-
-
-static void init_chains(int rxFragments, int txFragments)
-{
-    // struct capref frame_ci;
-    /// int rc;
-    int i;
-    lpaddr_t pa = 0;
-
-    TU_DEBUG("\nXXXXXXXXXXXXXXXXXXXXXXXX\n");
-    TU_DEBUG("InitChains(rx = %d, tx = %d)\n",
-                     rxFragments, txFragments);
-
-    // Turn off receive and transmit
-    tulip_CSR6_t mode = tulip_CSR6_rd(&csrs);
-    mode = tulip_CSR6_SR_insert(mode, 0);
-    mode = tulip_CSR6_ST_insert(mode, 0);
-    //mode &= ~(CSR6.SR | CSR6.ST);
-    tulip_CSR6_wr(&csrs, mode);
-
-    // XXX PBAR This allocation code doesn't deal with >1 page properly!
-    TU_DEBUG("RX_BUFSIZE %x\n", RX_BUFSIZE);
-    rxbufs = contig_alloc(BASE_PAGE_SIZE /*RX_BUFSIZE*/, &pa);
-    TU_DEBUG("RXBUFS @ %p\n", rxbufs);
-
-    TU_DEBUG("PA=%lx\n", pa);
-
-    for( i=0; i < RX_FRAGMENTS; i++) {
-       tulip_RDES_t des = RXDESC_AT(i);
-       memset(des, 0, tulip_RDES_size);
-       tulip_RDES_OWN_insert(des, 0);
-       tulip_RDES_RCH_insert(des, 1);
-       tulip_RDES_RBS1_insert(des, BYTES_PER_FRAME);
-       tulip_RDES_RBA1_insert(des, pa + BUFFER_OFFSET(i, RX_FRAGMENTS));
-       tulip_RDES_RBA2_insert(des, pa + DESCRIPTOR_OFFSET((i + 1) % RX_FRAGMENTS));
-    }
-    
-    tulip_CSR3_wr(&csrs, (uint32_t)pa);
-    tulip_CSR2_wr(&csrs, 1);   // Receive poll demand
-
-    txbufs = contig_alloc(BASE_PAGE_SIZE /*TX_BUFSIZE*/, &pa);
-    TU_DEBUG("TXBUFS @ %p\n", txbufs);
-
-    TU_DEBUG("PA=%lx\n", pa);
-
-    for( i=0; i < TX_FRAGMENTS; i++) {
-       tulip_TDES_t des = TXDESC_AT(i);
-       memset(des, 0, tulip_TDES_size);
-       tulip_TDES_OWN_insert(des, 0);
-       tulip_TDES_FS_insert(des, 1);
-       tulip_TDES_LS_insert(des, 1);
-       tulip_TDES_TCH_insert(des, 1);
-       tulip_TDES_TBS1_insert(des, BYTES_PER_FRAME);
-       tulip_TDES_TBA1_insert(des, pa + BUFFER_OFFSET(i, TX_FRAGMENTS));
-       tulip_TDES_TBA2_insert(des, pa + DESCRIPTOR_OFFSET((i + 1) % TX_FRAGMENTS));
-    }
-    tulip_CSR4_wr(&csrs, (uint32_t)pa);
-    tulip_CSR1_wr(&csrs, 1);    // Transmit poll demand
-
-}
-
-static void start_io(void)
-{
-    tulip_CSR6_t csr6 = tulip_CSR6_initial;
-    csr6 = tulip_CSR6_HBD_insert(csr6, 1);
-    csr6 = tulip_CSR6_PS_insert(csr6, 1);
-    csr6 = tulip_CSR6_TR_insert(csr6, 3);
-    csr6 = tulip_CSR6_ST_insert(csr6, 1);
-    csr6 = tulip_CSR6_SR_insert(csr6, 1);
-
-    TU_DEBUG("start_io\n");
-    
-    //csr6.Write32(CSR6.MBO | CSR6.HBD | CSR6.PS | (3u << CSR6.TR_ROLL) |
-    //             CSR6.ST);
-    
-    //WriteStandardSetupFrame();
-
-    // Write CSR6 to start receive and transmit processes
-    //
-    // This is taken from the state remaining after pxeboot.
-    // == 100Mb/s MII/SYM (table 3-43 entry 1000)
-    //csr6.Write32(CSR6.MBO | CSR6.HBD | CSR6.PS | (3u << CSR6.TR_ROLL) |
-    //             CSR6.ST | CSR6.SR);
-    tulip_CSR6_wr(&csrs, csr6);
-    
-    //TU_DEBUG("Programmed CSR values...\n");
-    //print_csrs();
-
-}
-
-
-static void enable_irq(void)
-{
-    // Enable interrupts
-    TU_DEBUG("enable_irq\n");
-    tulip_CSR7_t csr7 = tulip_CSR7_initial;
-    csr7 = tulip_CSR7_RI_insert(csr7, 1);
-    csr7 = tulip_CSR7_TI_insert(csr7, 1);
-    csr7 = tulip_CSR7_AI_insert(csr7, 1);
-    tulip_CSR7_wr(&csrs, csr7);
-
-}
-
-/**
- * \brief Return MAC address.
- *
- * \param mac   Pointer to 6 byte array to hold MAC address.
- */
-static void ethernet_get_mac_address(uint8_t *mac)
-{
-    TU_DEBUG("tulip: get_mac_address\n");
-    memcpy(mac, mac_address, 6);
-}
-
-/**
- * \brief Send Ethernet packet.
- *
- * The packet should be a complete Ethernet frame. Nothing is added
- * by the card or the driver.
- *
- * This is currently a very basic polled-mode transmit which waits until
- * the packet has been sent on the wire.
- *
- * \param packet        Pointer to packet buffer.
- * \param size          Size in bytes of packet.
- */
-static errval_t ethernet_send_packets(struct client_closure* cl)
-{
-    assert("ethernet_send_packet for tulip is not yet (re)implemented");
-#if 0
-    // What is all this?  The next three lines pull information out of
-    // the client closure, and are part of the *new* networking design
-    // (as of 3/2013).
-    struct shared_pool_private *spp = cl->spp_ptr;
-    struct slot_data *sld = &spp->sp->slot_list[cl->tx_index].d;
-    uint64_t rtpbuf = sld->no_pbufs;
-
-    // This is the legacy code, which dealt directly with pbufs.  This
-    // needs to be converted.
-    TU_DEBUG("tulip: send_packet %d called\n", p->tot_len);
-    tulip_TDES_t volatile tdes = TXDESC_AT(0);
-    uint8_t * volatile txpkt = txbufs + BUFFER_OFFSET(0, 1);
-    for (; p != NULL; p = p->next) {
-        memcpy(txpkt, p->payload, p->len);
-        txpkt += p->len;
-    }
-    //tulip_TDES_IC_insert(tdes, 1);
-    tulip_TDES_LS_insert(tdes, 1);
-    tulip_TDES_TCH_insert(tdes, 1);
-    tulip_TDES_TBS1_insert(tdes, p->tot_len);
-    tulip_TDES_OWN_insert(tdes, 1);
-    tulip_CSR1_wr(&csrs, 1);    // Transmit poll demand
-    while (tulip_TDES_OWN_extract(tdes)) {
-#ifdef TULIP_TU_DEBUG
-       char buf[1024];
-       tulip_TDES_prtval(buf, 1023, tdes);
-       TU_DEBUG("Transmit: %s\n", buf);
-#endif // TULIP_TU_DEBUG
-        thread_yield();
-    }
-    TU_DEBUG("tulip: send complete\n");
-#endif
-    return SYS_ERR_OK;
-}
-
-/**
- * \brief Receive Ethernet packet.
- *
- */
-static uint16_t ethernet_get_next_packet(uint8_t *packet)
-{
-    tulip_RDES_t volatile rdes0 = RXDESC_AT(0);
-    uint32_t len = tulip_RDES_FL_extract(rdes0);
-    uint8_t * volatile rxpkt = rxbufs + BUFFER_OFFSET(0, 1);
-    TU_DEBUG("tulip: get_next_packet %d\n", len);
-    //dump_pkt(rxpkt, len);
-    memcpy(packet, rxpkt, len);
-    // Give the buffer back to the NIC
-    tulip_RDES_OWN_insert(rdes0, 1);
-    //tulip_CSR2_wr(&csrs, 1);    // receive poll demand (just in case)
-    return len;
-}
-
-/**
- * \brief Return the number of free TX slots
- *
- */
-static uint64_t ethernet_tx_slots_count(void)
-{
-    return 1; // Probably not what you want for a real application!
-}
-
-static bool ethernet_handle_free_tx_slot(void)
-{
-    TU_DEBUG("tulip: handle_free_tx_slot not implemented.\n");
-    return false; // FIXME!
-}
-
-static void tulip_handle_interrupt(void *arg)
-{
-    tulip_CSR5_t csr5 = tulip_CSR5_rd(&csrs);
-    TU_DEBUG("tulip: interrupt\n");
-    do {
-        // Clear interrupts on card (interrupt bits are "write 1 to clear")
-        tulip_CSR5_wr(&csrs, csr5);
-        //print_csrs();
-       
-        if (tulip_CSR5_RI_extract(csr5)) {
-            TU_DEBUG("RI\n");
-           tulip_RDES_t volatile rdes0 = RXDESC_AT(0);
-            if (tulip_RDES_OWN_extract(rdes0) == 0) {
-
-                uint8_t * volatile rxpkt = rxbufs + BUFFER_OFFSET(0, 1);
-#if 0
-                dump_pkt(rxpkt, tulip_RDES_FL_extract(rdes0));
-#endif
-               /* Ensures that netd is up and running */
-               if(waiting_for_netd()){
-                   TU_DEBUG("still waiting for netd to reg buf\n");
-                   return;
-               }
-               ethernet_get_next_packet(rxpkt);
-           }
-       }
-       if (tulip_CSR5_TI_extract(csr5)) {
-           TU_DEBUG("TI\n");
-        }
-        
-        csr5 = tulip_CSR5_rd(&csrs);
-    } while(tulip_CSR5_NIS_extract(csr5));
-    
-    //print_csrs();
-}
-
-
-/**
- * \brief Initialize network interface.
- *
- */
-static void tulip_init(void)
-{
-    uint8_t * srom;
-    
-    TU_DEBUG("tulip: Initialize() called\n");
-    
-#ifdef TULIP_TU_DEBUG
-    // Dump config registers
-    TU_DEBUG("Initial CSR values...\n");
-    print_csrs(void)();
-#endif
-
-    TU_DEBUG("Reset...\n");
-    tulip_CSR0_SWR_wrf(&csrs, 1);
-
-#ifdef TULIP_TU_DEBUG
-    TU_DEBUG("New CSR values...\n");
-    print_csrs();
-#endif
-
-    TU_DEBUG("Read SROM...\n");
-    srom = read_srom();
-    memcpy(mac_address, srom+20, 6);
-    TU_DEBUG("MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-        mac_address[0], mac_address[1], mac_address[2],
-        mac_address[3], mac_address[4], mac_address[5]);
-
-    // Build the transmit and receive descriptors
-    init_chains(1, 1);
-
-    // Enable IRQs
-    enable_irq();
-
-    // Clear interrupts
-    tulip_CSR5_wr(&csrs, tulip_CSR5_rd(&csrs));
-
-    // Start RX and TX DMA engines
-    start_io();
-
-#if 0
-    // Poll for receive packets
-    tulip_RDES_t volatile rdes0 = RXDESC_AT(0);
-    uint8_t * volatile rxpkt = rxbufs + BUFFER_OFFSET(0, 1);
-    memset(rxpkt, 0xaa, BYTES_PER_FRAME);
-
-    while(1) {
-        if (tulip_RDES_OWN_extract(rdes0) == 0) {
-            uint32_t len = tulip_RDES_FL_extract(rdes0);
-            TU_DEBUG("Got a packet len %d!\n", len);
-            dump_pkt(rxpkt, len);
-            print_csrs();
-            // Give the buffer back to the NIC
-            tulip_RDES_OWN_insert(rdes0, 1);
-
-            // Clear pending interrupts
-            tulip_CSR5_wr(&csrs, tulip_CSR5_rd(&csrs));
-            TU_DEBUG("CSR5=%x\n", tulip_CSR5_rd(&csrs));
-        }
-        thread_yield();
-        
-    }
-#endif
-    ethersrv_init("tulip",
-                 0, // assumed queue id
-                 ethernet_get_mac_address,
-                 ethernet_send_packets,
-                 ethernet_tx_slots_count,
-                 ethernet_handle_free_tx_slot);
-}
-
-
-/**
- * \brief Initialize tulip as a legacy driver.
- *
- *
- */
-static errval_t legacy_tulip_driver_init(void)
-{
-       /* FIXME: pci_client_connect returns int and not errval_t.
-        * So, change the pci_client_connect() */
-    errval_t err = pci_client_connect();
-    if (err_is_fail(err)) {
-       return err;
-    }
-    TU_DEBUG("connected to pci\n");
-
-    return pci_register_legacy_driver_irq(tulip_init,
-                                         TULIP_PORTBASE,
-                                         TULIP_PORTEND,
-                                         TULIP_IRQ,
-                                         tulip_handle_interrupt,
-                                         NULL);
-}
-
-
-int main(int argc, char *argv[])
-{
-    struct waitset *ws = get_default_waitset();
-    errval_t err;
-
-    TU_DEBUG("Starting tulip standalone driver.....\n");
-    // Initialize driver
-    err = legacy_tulip_driver_init();
-    if (err_is_fail(err)) {
-        USER_PANIC_ERR(err, "legacy_tulip_driver_init\n");
-    }
-    TU_DEBUG("registered driver\n");
-
-    while (1) {
-        err = event_dispatch(ws);
-        if (err_is_fail(err)) {
-            DEBUG_ERR(err, "in event_dispatch");
-            break;
-        }
-    }
-}
diff --git a/usr/drivers/tulip/tulip.h b/usr/drivers/tulip/tulip.h
deleted file mode 100644 (file)
index caf3db8..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/** \file
- * \brief DEC Tulip ethernet driver
- *
- * This file is a driver for the DEC21140 Tulip ethernet card
- */
-
-/*
- * Copyright (c) 2007, 2008, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef _TULIP_H
-#define _TULIP_H
-
-#include <stdint.h>
-#include <pci/pci.h>
-
-//#define TULIP_DEBUG
-#ifdef TULIP_DEBUG
-#define TU_DEBUG(x...) printf("TULIP: " x)
-#else
-#define TU_DEBUG(x...) ((void)0)
-#endif
-
-#define PCI_VENDOR_DEC          0x1011
-#define PCI_DEVICE_DEC_TULIP    0x9
-#define TULIP_PORTBASE          0xec00   
-#define TULIP_PORTEND           0xec1f
-#define TULIP_IRQ               9
-
-#endif // _TULIP_H
index 83a4ddc..6c433f3 100644 (file)
@@ -7,7 +7,7 @@
 -- ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
 --
 -- Hakefile for drivers/serial
--- 
+--
 --------------------------------------------------------------------------
 
 let commonCFiles = [ "usb_manager.c", "usb_controller.c",
@@ -16,20 +16,20 @@ let commonCFiles = [ "usb_manager.c", "usb_controller.c",
                       "usb_request.c", "usb_transfer.c",
                       "usb_pipe.c", "usb_driver.c",
                       -- OHCI Controller
-                      "controller/ohci/usb_ohci_bus.c", 
-                      "controller/ohci/usb_ohci_memory.c", 
+                      "controller/ohci/usb_ohci_bus.c",
+                      "controller/ohci/usb_ohci_memory.c",
                       "controller/ohci/usb_ohci_queue.c",
-                      "controller/ohci/usb_ohci_pipe.c", 
-                      "controller/ohci/usb_ohci_root_hub.c", 
-                      "controller/ohci/usb_ohci_xfer.c", 
+                      "controller/ohci/usb_ohci_pipe.c",
+                      "controller/ohci/usb_ohci_root_hub.c",
+                      "controller/ohci/usb_ohci_xfer.c",
                       "controller/ohci/usb_ohci.c",
                       -- EHCI Controller
-                      "controller/ehci/usb_ehci_bus.c", 
-                      "controller/ehci/usb_ehci_memory.c", 
+                      "controller/ehci/usb_ehci_bus.c",
+                      "controller/ehci/usb_ehci_memory.c",
                       "controller/ehci/usb_ehci_queue.c",
-                      "controller/ehci/usb_ehci_pipe.c", 
-                      "controller/ehci/usb_ehci_root_hub.c", 
-                      "controller/ehci/usb_ehci_xfer.c", 
+                      "controller/ehci/usb_ehci_pipe.c",
+                      "controller/ehci/usb_ehci_root_hub.c",
+                      "controller/ehci/usb_ehci_xfer.c",
                       "controller/ehci/usb_ehci.c",
                       -- USB hub
                       "hub/usb_hub.c",
@@ -37,7 +37,7 @@ let commonCFiles = [ "usb_manager.c", "usb_controller.c",
                       ]
 in
 [ build application { target = "usb_manager",
-                      cFiles = commonCFiles,
+                      cFiles = commonCFiles ++ [ "omap44xx.c" ],
 
                       flounderDefs = [ "usb_manager", "usb_driver", "monitor_blocking" ],
                       flounderBindings = [ "usb_manager", "usb_driver" ],
@@ -46,21 +46,6 @@ in
                       flounderExtraDefs = [ ("monitor_blocking", ["rpcclient"]) ],
 
                       mackerelDevices = [ "ohci", "omap/ohci",
-                                          "ehci", "omap/ehci"],
-                      addIncludes = [ "include"],
-                      addLibraries = ["usb", "driverkit"],
-                      architectures = [ "x86_64", "armv8", "x86_32", "k1om" ]
-                    },
-  build application { target = "usb_manager",
-                      cFiles = commonCFiles ++ [ "omap44xx.c" ],
-                      
-                      flounderDefs = [ "usb_manager", "usb_driver", "monitor_blocking" ],
-                      flounderBindings = [ "usb_manager", "usb_driver" ],
-                      flounderExtraBindings = [ ("usb_manager",["rpcclient"])],
-                      
-                      flounderExtraDefs = [ ("monitor_blocking", ["rpcclient"]) ],
-                      
-                      mackerelDevices = [ "ohci", "omap/ohci", 
                                           "ehci", "omap/ehci",
                                           "omap/omap44xx_hsusbhost",
                                           "omap/omap44xx_usbtllhs_config",
index c65a141..a16ed74 100644 (file)
@@ -23,11 +23,9 @@ const char *service_name = "xmplcr_service";
 
 /* --------------------- Client ------------------------------ */
 
-static void rx_myresponse(struct xmplcr_binding *b, char *s)
+static void rx_myresponse(struct xmplcr_binding *b, const char *s)
 {
     debug_printf("client: rx_myresponse called: %s\n", s);
-
-    free(s);
 }
 
 
@@ -73,7 +71,7 @@ static void bind_cb(void *st, errval_t err, struct xmplcr_binding *b)
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "bind failed");
     }
-    
+
     b->rx_vtbl = c_rx_vtbl;
 
     send_mycall(b);
@@ -90,8 +88,8 @@ static void start_client(void)
         USER_PANIC_ERR(err, "nameservice_blocking_lookup failed");
     }
 
-    err = xmplcr_bind(iref, 
-                     bind_cb, 
+    err = xmplcr_bind(iref,
+                     bind_cb,
                      NULL /* state for bind_cb */,
                      get_default_waitset(),
                      IDC_BIND_FLAGS_DEFAULT);
@@ -148,7 +146,7 @@ static void send_myresponse(void *a)
             free_st(st);
         }
     }
-    
+
 }
 
 static void rx_mycall(struct xmplcr_binding *b, int i)
@@ -175,8 +173,8 @@ static struct xmplcr_rx_vtbl s_rx_vtbl = {
     .mycall = rx_mycall,
 };
 
-static errval_t connect_cb(void *st, struct xmplcr_binding *b) 
-{    
+static errval_t connect_cb(void *st, struct xmplcr_binding *b)
+{
     b->rx_vtbl = s_rx_vtbl;
 
     return SYS_ERR_OK;
@@ -211,7 +209,7 @@ static void start_server(void)
 
 /* --------------------- Main ------------------------------ */
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     errval_t err;
 
index 2716cc3..4790d86 100644 (file)
@@ -23,7 +23,7 @@ const char *service_name = "xmplrpc_msg_service";
 
 /* --------------------- Client ------------------------------ */
 
-static void rx_myrpc_response(struct xmplrpc_binding *b, char *s)
+static void rx_myrpc_response(struct xmplrpc_binding *b, const char *s)
 {
     debug_printf("client: rx_myrpc_response called: %s\n", s);
 
@@ -73,7 +73,7 @@ static void bind_cb(void *st, errval_t err, struct xmplrpc_binding *b)
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "bind failed");
     }
-    
+
     b->rx_vtbl = c_rx_vtbl;
 
     send_myrpc_call(b);
@@ -90,8 +90,8 @@ static void start_client(void)
         USER_PANIC_ERR(err, "nameservice_blocking_lookup failed");
     }
 
-    err = xmplrpc_bind(iref, 
-                     bind_cb, 
+    err = xmplrpc_bind(iref,
+                     bind_cb,
                      NULL /* state for bind_cb */,
                      get_default_waitset(),
                      IDC_BIND_FLAGS_DEFAULT);
@@ -174,8 +174,8 @@ static struct xmplrpc_rx_vtbl s_rx_vtbl = {
     .myrpc_call = rx_myrpc_call,
 };
 
-static errval_t connect_cb(void *st, struct xmplrpc_binding *b) 
-{    
+static errval_t connect_cb(void *st, struct xmplrpc_binding *b)
+{
     b->rx_vtbl = s_rx_vtbl;
 
     return SYS_ERR_OK;
@@ -210,7 +210,7 @@ static void start_server(void)
 
 /* --------------------- Main ------------------------------ */
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     errval_t err;
 
index 3c447dc..be6efb1 100644 (file)
@@ -24,19 +24,19 @@ const char *service_name = "xmplrpc_rpc_service";
 
 /* --------------------- Client ------------------------------ */
 
-static struct xmplrpc_binding xmplrpc_client;
+static struct xmplrpc_binding *xmplrpc_client;
 
 static void send_myrpc(void)
 {
     errval_t err;
 
     int in;
-    char *s_out;
+    static char s_out[2048];
 
     debug_printf("client: sending myrpc\n");
 
     in = 42;
-    err = xmplrpc_client->rpc_tx_vtbl.myrpc(&xmplrpc_client, in, &s_out);
+    err = xmplrpc_client->rpc_tx_vtbl.myrpc(xmplrpc_client, in, s_out);
 
     if (err_is_ok(err)) {
         debug_printf("client: myrpc(in: %u, out: '%s')\n", in, s_out);
@@ -52,8 +52,11 @@ static void bind_cb(void *st, errval_t err, struct xmplrpc_binding *b)
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "bind failed");
     }
-    
-    xmplrpc_binding_init(&xmplrpc_client, b);
+
+    xmplrpc_rpc_client_init(b);
+
+    xmplrpc_client  = b;
+
     printf("client: finished xmlrpc_binding_init\n");
 
     send_myrpc();
@@ -70,8 +73,8 @@ static void start_client(void)
         USER_PANIC_ERR(err, "nameservice_blocking_lookup failed");
     }
 
-    err = xmplrpc_bind(iref, 
-                     bind_cb, 
+    err = xmplrpc_bind(iref,
+                     bind_cb,
                      NULL /* state for bind_cb */,
                      get_default_waitset(),
                      IDC_BIND_FLAGS_DEFAULT);
@@ -154,8 +157,8 @@ static struct xmplrpc_rx_vtbl s_rx_vtbl = {
     .myrpc_call = rx_myrpc_call,
 };
 
-static errval_t connect_cb(void *st, struct xmplrpc_binding *b) 
-{    
+static errval_t connect_cb(void *st, struct xmplrpc_binding *b)
+{
     b->rx_vtbl = s_rx_vtbl;
 
     return SYS_ERR_OK;
@@ -190,7 +193,7 @@ static void start_server(void)
 
 /* --------------------- Main ------------------------------ */
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     errval_t err;
 
index d54e3c5..8a52c77 100644 (file)
@@ -10,7 +10,9 @@
 --
 --------------------------------------------------------------------------
 
-[ build application { target = "examples/xmpl-thc-lang",
+[
+       {-
+       build application { target = "examples/xmpl-thc-lang",
                       cFiles = [ "thc-lang.c" ],
                      flounderDefs = [ "xmplthc" ],
                      flounderBindings = [ "xmplthc" ],
@@ -18,6 +20,7 @@
                      addLibraries = [ "thc" ],
                      architectures = [ "x86_64", "x86_32" ]
                     }
+    -}
 ]
 
 
index 79fe862..87e24ae 100644 (file)
@@ -33,12 +33,7 @@ void *HPCC_malloc(size_t bytes, size_t alignment)
             flags |= VREGION_FLAGS_LARGE;
             break;
         case HUGE_PAGE_SIZE:
-            if (vspace_has_hugepage_support()) {
-                flags |= VREGION_FLAGS_HUGE;
-            } else {
-                printf("WARNING: Machine has no hugepage support\n");
-                alignment = BASE_PAGE_SIZE;
-            }
+            flags |= VREGION_FLAGS_HUGE;
             break;
         default:
             USER_PANIC("Invalid alignment: %" PRIu64, alignment)
index cc9558d..917477f 100644 (file)
@@ -15,7 +15,7 @@
   build application { target = "mem_serv_dist_ns",
                       cFiles = [ "mem_serv.c", "no_steal.c", "hybrid_support.c", "skb.c", "args.c", "memtest_trace.c" ],
                       flounderDefs = [ "monitor", "monitor_blocking", "mem", "spawn" ],
-                      flounderExtraDefs = [ ("mem", ["rpcclient"]), 
+                      flounderExtraDefs = [ ("mem", ["rpcclient"]),
                                                 ("spawn", ["rpcclient"]),
                                                 ("monitor_blocking", ["rpcclient"])],
                       addLibraries = [ "mm", "trace", "skb", "dist" ]
                       flounderDefs = [ "monitor", "monitor_blocking", "mem", "spawn" ],
                       flounderTHCStubs = [ "mem" ],
                       flounderExtraDefs = [ ("mem", ["rpcclient"]),
-                                                ("spawn", ["rpcclient"]), 
+                                                ("spawn", ["rpcclient"]),
                                                 ("monitor_blocking", ["rpcclient"])],
-                      addLibraries = [ "mm", "trace", "skb", "dist", "thc" ],
+                    addLibraries = [ "mm", "trace", "skb", "dist" ]
+                      ,
                      architectures = [ "x86_64", "x86_32" ]
                     },
 
 -- fully thc
+{-
   build application { target = "mem_serv_dist_thc",
                      cFiles = [ "mem_serv.c", "steal.c", "thc_support.c", "skb.c", "args.c", "memtest_trace.c" ],
                       flounderDefs = [ "monitor", "monitor_blocking", "mem", "spawn" ],
                       flounderExtraDefs = [ ("mem", ["rpcclient"]),
                                                 ("spawn", ["rpcclient"]),
                                                 ("monitor_blocking", ["rpcclient"])],
-                      addLibraries = [ "mm", "trace", "skb", "dist", "thc" ],
+                      ,
                       architectures = [ "x86_64", "x86_32" ]
                     },
+-}
   build application { target = "mem_bench",
                      cFiles = [ "mem_bench.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace" ]
-                   },          
+                     addLibraries = [ "trace", "bench" , "dist"]
+                   },
   build application { target = "mem_bench_2",
                      cFiles = [ "mem_bench_2.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace" ]
-                   },          
+                    addLibraries = [ "trace", "bench" , "dist"]
+                   },
   build application { target = "mem_bench_3",
                      cFiles = [ "mem_bench_3.c", "sleep.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace", "bench" ]
+                     addLibraries = [ "trace", "bench" , "dist"]
                    },
   build application { target = "mem_bench_4",
                      cFiles = [ "mem_bench_4.c", "sleep.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace", "bench" ]
+                     addLibraries = [ "trace", "bench" , "dist"]
                    },
   build application { target = "mem_bench_5",
                      cFiles = [ "mem_bench_5.c", "sleep.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace", "bench" ]
+                     addLibraries = [ "trace", "bench" , "dist"]
                    },
   build application { target = "mem_bench_6",
                      cFiles = [ "mem_bench_6.c", "sleep.c", "memtest_trace.c" ],
-                     addLibraries = [ "trace", "bench" ]
+                     addLibraries = [ "trace", "bench" , "dist"]
                    }
 ]
index 6bffd43..aba3477 100644 (file)
@@ -12,9 +12,9 @@
  */
 
 /*
- * Spawn benchmark on given # of cores. 
+ * Spawn benchmark on given # of cores.
  * Request memory on each core until it runs out.
- * This benchmark program does not wait on any barriers before starting. 
+ * This benchmark program does not wait on any barriers before starting.
  */
 
 #include <stdio.h>
@@ -24,6 +24,7 @@
 #include <trace/trace.h>
 
 #include <barrelfish/spawn_client.h>
+#include <dist/barrier.h>
 
 #include "memtest_trace.h"
 
@@ -38,7 +39,7 @@ static void run_benchmark_0(coreid_t core)
     struct capref ramcap;
 
     debug_printf("starting benchmark. allocating mem of size: %d\n", MEM_BITS);
-    
+
     int i = -1;
 
     do {
@@ -46,7 +47,7 @@ static void run_benchmark_0(coreid_t core)
         err = ram_alloc(&ramcap, MEM_BITS);
     } while (err_is_ok(err) && (i < 10));
 
-    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n", 
+    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n",
                  i, i * (1UL << MEM_BITS));
 }
 
@@ -57,7 +58,7 @@ static void run_benchmark(coreid_t core)
     struct capref ramcap;
 
     debug_printf("starting benchmark. allocating mem of size: %d\n", MEM_BITS);
-    
+
     int i = -1;
 
     do {
@@ -65,14 +66,14 @@ static void run_benchmark(coreid_t core)
         err = ram_alloc(&ramcap, MEM_BITS);
     } while (err_is_ok(err));
 
-    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n", 
+    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n",
                  i, i * (1UL << MEM_BITS));
 
-    ns_barrier_register_n(core, "mem_bench");
+    nsb_register_n(core, "mem_bench");
 }
 
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     errval_t err;
 
@@ -104,7 +105,7 @@ int main(int argc, char *argv[])
             if (err_is_fail(err)) {
                 DEBUG_ERR(err, "failed spawn %d", i);
                 return EXIT_FAILURE;
-            } 
+            }
             debug_printf("spawned on core %d\n", i);
         }
 
@@ -112,7 +113,7 @@ int main(int argc, char *argv[])
 
         run_benchmark_0(mycore);
 
-        ns_barrier_master(1, num_cores, "mem_bench");
+        nsb_master(1, num_cores, "mem_bench");
 
         debug_printf("all benchmarks completed\n");
 
index a26ac2d..7cfef3d 100644 (file)
  */
 
 /*
- * Spawn benchmark on given # of cores. 
+ * Spawn benchmark on given # of cores.
  * Request set amount of memory on each core.
- * This benchmark program waits on barriers to ensure that the mem server is 
- * running and to synchronise the starting and stopping of the benchmarks on 
+ * This benchmark program waits on barriers to ensure that the mem server is
+ * running and to synchronise the starting and stopping of the benchmarks on
  * different dispatchers.
  */
 
@@ -42,12 +42,12 @@ static void run_benchmark(coreid_t core, int requests)
 {
     errval_t err;
     struct capref ramcap;
-    
+
     int i = -1;
     int bits = MEM_BITS;
 
     debug_printf("starting benchmark. allocating mem of size: %d\n", bits);
-    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n", 
+    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n",
     //             MINSIZEBITS, MINSIZEBITS+requests-1);
 
 
@@ -68,7 +68,7 @@ static void run_benchmark(coreid_t core, int requests)
 
     } while (err_is_ok(err)); // && (i < requests));
 
-    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n", 
+    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n",
                  i, i * (1UL << bits));
 
 }
@@ -81,24 +81,24 @@ static int run_worker(coreid_t mycore)
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_ready");
+    err = nsb_worker((int)mycore, "mem_bench_ready");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_RUN, 0);
-    
+
     run_benchmark(mycore, MAX_REQUESTS);
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_finished");
+    err = nsb_worker((int)mycore, "mem_bench_finished");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_DONE, 0);
-    
+
     return EXIT_SUCCESS;
 }
 
@@ -119,7 +119,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     // start_tracing();
 
     prepare_dump();
-#endif 
+#endif
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_STARTED, 0);
 
@@ -141,7 +141,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to start\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_ready");
+    err = nsb_master(first_core, num_spawn, "mem_bench_ready");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -156,7 +156,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to complete\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_finished");
+    err = nsb_master(first_core, num_spawn, "mem_bench_finished");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -169,13 +169,13 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
 #ifdef TRACING
     stop_tracing();
     // dump_trace();
-#endif 
+#endif
 
     return EXIT_SUCCESS;
 }
 
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     coreid_t mycore = disp_get_core_id();
 
index 8a576d6..b3de470 100644 (file)
  */
 
 /*
- * Spawn benchmark on given # of cores. 
+ * Spawn benchmark on given # of cores.
  * Request set amount of memory on each core.
- * This benchmark program waits on barriers to ensure that the mem server is 
- * running and to synchronise the starting and stopping of the benchmarks on 
+ * This benchmark program waits on barriers to ensure that the mem server is
+ * running and to synchronise the starting and stopping of the benchmarks on
  * different dispatchers.
  */
 
@@ -44,9 +44,9 @@ static void run_benchmark(coreid_t core, int requests)
 {
 
     debug_printf("starting benchmark. mallocing mem of size: %d\n",MALLOC_SIZE);
-    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n", 
+    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n",
     //             MINSIZEBITS, MINSIZEBITS+requests-1);
-    
+
     int i = -1;
 
     char *mem;
@@ -64,7 +64,7 @@ static void run_benchmark(coreid_t core, int requests)
         }
     } while ((mem != NULL)); // && (i < requests));
 
-    debug_printf("done benchmark. allocated %d memory %d times: total: %lu\n", 
+    debug_printf("done benchmark. allocated %d memory %d times: total: %lu\n",
                  MALLOC_SIZE, i, (unsigned long)MALLOC_SIZE * i);
 
 }
@@ -77,24 +77,24 @@ static int run_worker(coreid_t mycore)
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_ready");
+    err = nsb_worker((int)mycore, "mem_bench_ready");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_RUN, 0);
-    
+
     run_benchmark(mycore, MAX_REQUESTS);
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_finished");
+    err = nsb_worker((int)mycore, "mem_bench_finished");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_DONE, 0);
-    
+
     return EXIT_SUCCESS;
 }
 
@@ -137,7 +137,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to start\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_ready");
+    err = nsb_master(first_core, num_spawn, "mem_bench_ready");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -152,7 +152,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to complete\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_finished");
+    err = nsb_master(first_core, num_spawn, "mem_bench_finished");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -169,7 +169,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
 }
 
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     coreid_t mycore = disp_get_core_id();
 
index 3921669..72c8a20 100644 (file)
  */
 
 /*
- * Spawn benchmark on given # of cores. 
+ * Spawn benchmark on given # of cores.
  * Request set amount of memory on each core.
- * This benchmark program waits on barriers to ensure that the mem server is 
- * running and to synchronise the starting and stopping of the benchmarks on 
+ * This benchmark program waits on barriers to ensure that the mem server is
+ * running and to synchronise the starting and stopping of the benchmarks on
  * different dispatchers.
  */
 
@@ -43,12 +43,12 @@ static void run_benchmark(coreid_t core, int requests)
     errval_t err;
     struct capref ramcap;
 
-    
+
     int i = -1;
     int bits = MEM_BITS;
 
     debug_printf("starting benchmark. allocating mem of size: %d\n", bits);
-    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n", 
+    //debug_printf("starting benchmark. allocating mem of size: %d to %d\n",
     //             MINSIZEBITS, MINSIZEBITS+requests-1);
 
 
@@ -66,7 +66,8 @@ static void run_benchmark(coreid_t core, int requests)
             DEBUG_ERR(err, "ram_alloc failed");
         }
         milli_sleep(1);
-        err = ram_free(ramcap);
+        /// XXX: just destroying the cap... should actually handing back properly
+        err = cap_destroy(ramcap);
         if (err_is_fail(err)) {
             DEBUG_ERR(err, "ram_free failed");
         }
@@ -75,7 +76,7 @@ static void run_benchmark(coreid_t core, int requests)
         }
     } while (err_is_ok(err)); // && (i < requests));
 
-    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n", 
+    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n",
                  i, i * (1UL << bits));
 
 }
@@ -88,24 +89,24 @@ static int run_worker(coreid_t mycore)
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_ready");
+    err = nsb_worker((int)mycore, "mem_bench_ready");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_RUN, 0);
-    
+
     run_benchmark(mycore, MAX_REQUESTS);
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_finished");
+    err = nsb_worker((int)mycore, "mem_bench_finished");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_DONE, 0);
-    
+
     return EXIT_SUCCESS;
 }
 
@@ -148,7 +149,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to start\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_ready");
+    err = nsb_master(first_core, num_spawn, "mem_bench_ready");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -163,7 +164,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to complete\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_finished");
+    err = nsb_master(first_core, num_spawn, "mem_bench_finished");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -180,7 +181,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
 }
 
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     coreid_t mycore = disp_get_core_id();
 
index 568188c..c31910e 100644 (file)
@@ -1,6 +1,6 @@
 /** \file
  *  \brief Memory server benchmark application, testing memory stealing.
- *         
+ *
  *  Run it with and without memory stealing turned on in the mem_serv.
  */
 
  */
 
 /*
- * Spawn benchmark on given # of cores. 
+ * Spawn benchmark on given # of cores.
  * Request set amount of memory on each core.
- * This benchmark program waits on barriers to ensure that the mem server is 
- * running and to synchronise the starting and stopping of the benchmarks on 
+ * This benchmark program waits on barriers to ensure that the mem server is
+ * running and to synchronise the starting and stopping of the benchmarks on
  * different dispatchers.
  */
 
@@ -45,13 +45,13 @@ static void run_benchmark(coreid_t core, int requests)
     errval_t err;
     struct capref ramcap;
 
-    // the actual test runs on one core, so that it can steal from other 
+    // the actual test runs on one core, so that it can steal from other
     // cores
     if (core != 1) {
         debug_printf("core %d NOT participating in test\n", core);
         return;
     }
-    
+
     int i = -1;
     int bits = MEM_BITS;
 
@@ -72,7 +72,7 @@ static void run_benchmark(coreid_t core, int requests)
 
     } while (err_is_ok(err)); // && (i < requests));
 
-    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n", 
+    debug_printf("done benchmark. allocated %d caps (%lu bytes)\n",
                  i, i * (1UL << bits));
 
 }
@@ -85,24 +85,24 @@ static int run_worker(coreid_t mycore)
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_ready");
+    err = nsb_worker((int)mycore, "mem_bench_ready");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_RUN, 0);
-    
+
     run_benchmark(mycore, MAX_REQUESTS);
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
-    err = ns_barrier_worker((int)mycore, "mem_bench_finished");
+    err = nsb_worker((int)mycore, "mem_bench_finished");
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "barrier_worker failed");
     }
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_DONE, 0);
-    
+
     return EXIT_SUCCESS;
 }
 
@@ -125,7 +125,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     // start_tracing();
 
     prepare_dump();
-#endif 
+#endif
 
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_STARTED, 0);
 
@@ -147,7 +147,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to start\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_ready");
+    err = nsb_master(first_core, num_spawn, "mem_bench_ready");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -162,7 +162,7 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
     trace_event(TRACE_SUBSYS_MEMTEST, TRACE_EVENT_MEMTEST_WAIT, 0);
 
     //    debug_printf("waiting for all spawns to complete\n");
-    err = ns_barrier_master(first_core, num_spawn, "mem_bench_finished");
+    err = nsb_master(first_core, num_spawn, "mem_bench_finished");
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "failed barrier_master");
         return EXIT_FAILURE;
@@ -175,13 +175,13 @@ static int run_master(coreid_t mycore, int argc, char *argv[])
 #ifdef TRACING
     stop_tracing();
     // dump_trace();
-#endif 
+#endif
 
     return EXIT_SUCCESS;
 }
 
 
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
     coreid_t mycore = disp_get_core_id();
 
index 1d0f8ed..141b3a9 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <barrelfish/barrelfish.h>
 #include <trace_definitions/trace_defs.h>
+#include <dist/barrier.h>
 
 errval_t init_tracing(void);
 void start_tracing(void);
index 41f3ed2..cfd7a65 100644 (file)
@@ -12,8 +12,7 @@
 
 [ build application { target = "netfile",
                      cFiles = [ "netfile.c" ],
-                     addLibraries = [ "vfs", "nfs", "ahci", "lwip", "contmng",
-                                        "net_if_raw"],
+                     addLibraries = [ "vfs", "nfs", "ahci", "contmng", "lwip2", "net" ],
                      architectures = [ "x86_64" ]
                     }
 ]
index 5f6c86b..287e441 100644 (file)
@@ -27,8 +27,8 @@
 #include <netif/etharp.h>
 #include <lwip/init.h>
 #include <lwip/tcp.h>
-#include <netif/bfeth.h>
 #include <lwip/ip_addr.h>
+#include <net/net.h>
 
 
 /* -------------- Coordination ----------------------*/
@@ -52,7 +52,7 @@ wait_for_condition (void) {
 /* -------------- Networking ----------------------*/
 
 static err_t tcp_is_sent(void *arg, struct tcp_pcb *pcb, u16_t len);
-static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb, 
+static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb,
                          err_t err);
 
 static void tcp_is_err(void *arg, err_t err)
@@ -91,7 +91,7 @@ static err_t tcp_is_connected(void *arg, struct tcp_pcb *pcb, err_t err)
 }
 
 
-static struct tcp_pcb *connect(struct ip_addr *ip, int port)
+static struct tcp_pcb *connect(ip_addr_t *ip, int port)
 {
     //    debug_printf("connect()\n");
 
@@ -107,6 +107,7 @@ static struct tcp_pcb *connect(struct ip_addr *ip, int port)
 
     //    debug_printf("pcb created\n");
 
+
     //    debug_printf("connecting to server\n");
     wait_cond = true;
     err = tcp_connect(pcb, ip, port, tcp_is_connected);
@@ -160,7 +161,7 @@ static struct tcp_pcb *bind(int port)
     //    debug_printf("tcp_bind completed\n");
 
     //    debug_printf("calling tcp_listen\n");
-    
+
     pcb = tcp_listen(pcb);
     if (pcb == NULL) {
         return NULL;
@@ -185,7 +186,7 @@ static void close_connection(struct tcp_pcb *pcb)
     tcp_sent(pcb, NULL);
     tcp_recv(pcb, NULL);
     debug_printf("connection closed\n");
-    //    wait_for_condition();    
+    //    wait_for_condition();
 }
 
 
@@ -193,7 +194,7 @@ static void close_connection(struct tcp_pcb *pcb)
 
 static FILE* recv_f;
 
-static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb, 
+static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb,
                          err_t err)
 {
     //    debug_printf("tcp is recv\n");
@@ -213,10 +214,10 @@ static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb,
     } else if ((err == ERR_OK) && (pb != NULL)) {
 
         // pointer to the payload
-        payload = (char *)pb->payload; 
+        payload = (char *)pb->payload;
 
         // size of the payload
-        len = pb->tot_len; 
+        len = pb->tot_len;
 
         //        debug_printf("Got data [%d bytes]\n", len);
         //        printf("data: %s\n", payload);
@@ -231,7 +232,7 @@ static err_t tcp_is_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb,
         //        debug_printf("for a total of: %d bytes\n", tot);
 
         // Inform TCP that we have taken the data.
-        tcp_recved(pcb, pb->tot_len);  
+        tcp_recved(pcb, pb->tot_len);
 
         // Free the packet buffer
         pbuf_free(pb);
@@ -255,7 +256,7 @@ static errval_t do_receive_file(int port, char *path)
     //    debug_printf("opening %s for writing\n", path);
 
     // open file to receive
-    recv_f = fopen(path, "w");  
+    recv_f = fopen(path, "w");
     if (recv_f == NULL) {
         err = errno;
         fprintf(stderr, "failed to fopen %s for writing\n", path);
@@ -272,7 +273,7 @@ static errval_t do_receive_file(int port, char *path)
         assert(pcb != NULL);
         // return SOME_ERR;
     }
-    
+
     //    debug_printf("bound\n");
 
     return SYS_ERR_OK;
@@ -365,7 +366,7 @@ static errval_t send_file(struct tcp_pcb *pcb, char *path)
     //    debug_printf("opening file %s...", path);
 
     // open the file
-    f = fopen(path, "r");  
+    f = fopen(path, "r");
     if (f == NULL) {
         err = errno;
         fprintf(stderr, "failed to fopen %s\n", path);
@@ -401,17 +402,17 @@ static errval_t send_file(struct tcp_pcb *pcb, char *path)
 }
 
 
-static errval_t do_send_file(struct in_addr *addr, int port, char *path)
+static errval_t do_send_file(ip_addr_t *addr, int port, char *path)
 {
     assert(addr != NULL);
     assert(path != NULL);
 
     errval_t err;
 
-    debug_printf("send file %s to %s:%d\n", path, inet_ntoa(*addr), port);
+    debug_printf("send file %s to %s:%d\n", path, ipaddr_ntoa(addr), port);
 
-    static struct ip_addr ip;
-    ip.addr = addr->s_addr; // XXX
+    ip_addr_t ip;
+    ip_addr_copy(ip, *addr);
 
     //    debug_printf("ready to connect\n");
 
@@ -421,7 +422,7 @@ static errval_t do_send_file(struct in_addr *addr, int port, char *path)
         assert(pcb != NULL);
         // return SOME_ERR;
     }
-    
+
     //    debug_printf("connected\n");
 
     //    debug_printf("start sending.\n");
@@ -450,11 +451,11 @@ static errval_t do_send_file(struct in_addr *addr, int port, char *path)
 /* ------------------- Main -------------------------*/
 
 struct args {
-    struct in_addr addr;
+    ip_addr_t addr;
     bool addr_set;
     int port;
     bool send;
-    char *path;    
+    char *path;
 };
 
 static struct args process_args(int argc, char *argv[])
@@ -465,12 +466,12 @@ static struct args process_args(int argc, char *argv[])
         .send = false,
         .path = NULL,
     };
-    
+
     int opt;
     size_t flen;
 
     while ((opt = getopt(argc, argv, "sra:p:f:")) != -1) {
+
         switch (opt) {
         case 's':
             // send
@@ -482,10 +483,10 @@ static struct args process_args(int argc, char *argv[])
             break;
         case 'a':
             // IP address
-            if (inet_aton(optarg, &res.addr) == 0) {
+            if (ipaddr_aton(optarg, &res.addr) == 0) {
                 fprintf(stderr, "Invalid IP addr: %s\n", optarg);
                 goto fail;
-            }            
+            }
             res.addr_set = true;
             break;
         case 'p':
@@ -515,7 +516,7 @@ static struct args process_args(int argc, char *argv[])
     return res;
 
  fail:
-    fprintf(stderr, "Usage: %s [-sr] [-a address] [-p port] [-f file]\n", 
+    fprintf(stderr, "Usage: %s [-sr] [-a address] [-p port] [-f file]\n",
            argv[0]);
     exit(EXIT_FAILURE);
     return res;
@@ -535,7 +536,7 @@ int main(int argc, char *argv[])
     // Boot up
     //    debug_printf("calling stack_init()\n");
 
-    lwip_init_auto();
+    networking_init_default();
 
     //    debug_printf("back from stack_init()\n");
 
@@ -546,7 +547,7 @@ int main(int argc, char *argv[])
         debug_printf("do_send_file finished\n");
     } else {
         do_receive_file(args.port, args.path);
-    } 
+    }
 
 #if 0
     // start event loop
diff --git a/usr/pixels/Hakefile b/usr/pixels/Hakefile
deleted file mode 100644 (file)
index 171dc65..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
---------------------------------------------------------------------------
--- Copyright (c) 2007-2009, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
---
--- Hakefile for /usr/pixels
---
---------------------------------------------------------------------------
-
-[ build application { target = "pixels",
-                     cFiles = [ "pixels.c" ],
-                     addLibraries = [ "barrelfish", "trace" ],
-                     flounderBindings = [ "pixels" ]
-                    }
-]
diff --git a/usr/pixels/pixels.c b/usr/pixels/pixels.c
deleted file mode 100644 (file)
index b2849ca..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * \file
- * \brief Barrelfish trace server
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <barrelfish/barrelfish.h>
-#include <barrelfish/dispatch.h>
-#include <trace/trace.h>
-
-#include <if/pixels_defs.h>
-
-/// Called when servers setup their services
-static void _listening(struct pixels_service *_st, iref_t iref)
-{
-    char service[16];
-
-    /* Register service */
-    struct chips_context *context = chips_get_context();
-    printf("pixels.%d listening!\n", disp_get_core_id());
-
-    sprintf(service, "pixels.%d", disp_get_core_id());
-
-    context->register_service(service, iref, NULL, NULL);
-    printf("Registered %s\n", service);
-}
-
-static void pixels_display(struct pixels_service_response *cl, uint64_t arg)
-{
-    uint64_t now = rdtsc();
-    //    printf("display %lx\n", arg);
-    while (rdtsc() - now < arg) ;
-    cl->f->ack(cl);
-}
-
-int main(int argc, char**argv)
-{
-    errval_t err;
-
-    printf("%.*s running on core %d\n", DISP_NAME_LEN, disp_name(),
-           disp_get_core_id());
-
-    /* Setup a server */
-    static struct pixels_server_call_vtbl call_vtbl = {
-        ._listening  = _listening,
-        ._disconnect = NULL,
-        ._connected  = NULL,
-        
-        .display = pixels_display,
-    };
-    static struct pixels_service service = {
-        .f = &call_vtbl,
-    };
-    err = pixels_listen(&service);
-    if (err_is_fail(err)) {
-        DEBUG_ERR(err, "failed to setup a server");
-        exit(EXIT_FAILURE);
-    }
-
-    messages_handler_loop();
-
-    return 0;
-}
-
index 4ef795a..ba06640 100644 (file)
@@ -722,15 +722,11 @@ master_process_reqs(void)
 {
     /* process slave requests */
     for (;;){
-        struct event_closure closure;
         errval_t ret;
-        ret = check_for_event(get_default_waitset(), &closure);
+        ret = event_dispatch(get_default_waitset());
         if (ret == LIB_ERR_NO_EVENT)
             break;
         assert(err_is_ok(ret));
-        assert(closure.handler != NULL);
-        //printf(RED("-------- GOT A MASTER EVENT handler=%p arg=%p"), closure.handler, closure.arg);
-        closure.handler(closure.arg);
     }
 }
 
@@ -829,7 +825,7 @@ slaves_connect(struct task_graph *tg)
 
         /* initialize bulk transfer for slave */
         init_ok = false;
-        err = bulk_create(BULK_TOTAL_SIZE, BULK_BLOCK_SIZE, &sl->frame, &sl->bt, false);
+        err = bulk_create(BULK_TOTAL_SIZE, BULK_BLOCK_SIZE, &sl->frame, &sl->bt);
         assert(err_is_ok(err));
         err = sl->b->tx_vtbl.slave_init(sl->b, NOP_CONT, sl->frame, BULK_TOTAL_SIZE);
         assert(err_is_ok(err));
index 17db2b1..3d61c9d 100644 (file)
@@ -1,9 +1,14 @@
+
+#define _POSIX_C_SOURCE 200809L
+
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 #ifndef __linux__
 #include <barrelfish/barrelfish.h>
@@ -14,7 +19,6 @@
 #else
 #include <stdbool.h>
 #include <sys/types.h>
-#include <fcntl.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
index 25c7dcd..b923de0 100644 (file)
@@ -7,10 +7,14 @@
  * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
  */
 
+/// XXX: there seems to be some issues with this.., disabling this warning for now
+#pragma GCC diagnostic ignored "-Wshadow"
 #include <iostream>
+#pragma GCC diagnostic error "-Wshadow"
 
 #include <barrelfish/barrelfish.h>
 
+
 #include "cxxtest.hpp"
 
 int main(int argc,
index af05765..5b883c7 100644 (file)
 --
 --------------------------------------------------------------------------
 
-[ build application { target = "e1000test",
-                      cFiles = [ "e10ktest.c" ],
-                      flounderDefs = [ "acpi" ],
-                      flounderExtraBindings = [ ("acpi", ["rpcclient"]) ],
-                      addLibraries = [ "e1000n", "acpi_client", "skb", "lwip" ]
-                    },
+[
+{-
   build application { target = "e10k_ctrl",
                       flounderDefs = [ "acpi" ],
                       flounderExtraBindings = [ ("acpi", ["rpcclient"]) ],
@@ -52,4 +48,5 @@
                       cFiles = [ "e10ktest.c" ],
                       addLibraries = [ "e10k", "acpi_client", "skb", "lwip" ]
                     }
+-}
 ]
index 2680744..77849e5 100644 (file)
@@ -119,11 +119,11 @@ static void rx_init(struct flounderbootstrap_binding *b,
         USER_PANIC_ERR(err, "failed to identify the frame");
     }
 
-    assert((1UL << id.bits) >= (2 * CHANNEL_SIZE));
+    assert(id.bytes >= (2 * CHANNEL_SIZE));
 
     frame_info.sendbase = id.base;
 
-    err = vspace_map_one_frame(&addr, (1UL << id.bits), cap, NULL, NULL);
+    err = vspace_map_one_frame(&addr, id.bytes, cap, NULL, NULL);
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "failed to map the frame");
     }
index 0976b56..d32017e 100644 (file)
@@ -68,7 +68,7 @@ get_ranges(size_t count, uint8_t max_addr_bits, struct cte *out)
             memset(&out[gencount], 0, sizeof(struct cte));
             out[gencount].cap.type = ObjType_RAM;
             out[gencount].cap.rights = CAPRIGHTS_ALLRIGHTS;
-            out[gencount].cap.u.ram = (struct RAM) { .base = begin, .bits = sizebits };
+            out[gencount].cap.u.ram = (struct RAM) { .base = begin, .bytes = (1UL << sizebits) };
             gencount++;
         }
     }
@@ -88,8 +88,8 @@ __attribute__((unused))
 static void dump_ranges(struct cte *ranges, size_t count)
 {
     for (int i = 0; i < count; i++) {
-        printf("address = %"PRIxGENVADDR"\nsize=%d\n",
-                ranges[i].cap.u.ram.base, ranges[i].cap.u.ram.bits);
+        printf("address = %"PRIxGENVADDR"\nsize=%zu\n",
+                ranges[i].cap.u.ram.base, ranges[i].cap.u.ram.bytes);
     }
 }
 
index 974952c..ef4289e 100644 (file)
@@ -36,8 +36,8 @@ int main(int argc, char **argv)
     err = debug_cap_identify(theram, &cap);
     assert(err_is_ok(err));
     assert(cap.type == ObjType_RAM);
-    printf("got RAM at 0x%" PRIxGENPADDR ", size %u\n",
-           cap.u.ram.base, cap.u.ram.bits);
+    printf("got RAM at 0x%" PRIxGENPADDR ", size %zu\n",
+           cap.u.ram.base, cap.u.ram.bytes);
 
     struct capref leftcap, rightcap;
 
@@ -54,14 +54,14 @@ int main(int argc, char **argv)
     err = debug_cap_identify(leftcap, &cap);
     assert(err_is_ok(err));
     assert(cap.type == ObjType_RAM);
-    printf("left half at 0x%" PRIxGENPADDR ", size %u\n",
-           cap.u.ram.base, cap.u.ram.bits);
+    printf("left half at 0x%" PRIxGENPADDR ", size %zu\n",
+           cap.u.ram.base, cap.u.ram.bytes);
 
     err = debug_cap_identify(rightcap, &cap);
     assert(err_is_ok(err));
     assert(cap.type == ObjType_RAM);
-    printf("right half at 0x%" PRIxGENPADDR ", size %u\n",
-           cap.u.ram.base, cap.u.ram.bits);
+    printf("right half at 0x%" PRIxGENPADDR ", size %zu\n",
+           cap.u.ram.base, cap.u.ram.bytes);
 
     // Delete the parent (8K range)
     printf("deleting parent\n");
index 4aab2e0..4394e13 100644 (file)
@@ -12,6 +12,7 @@
     build application {
         target = "invtrig_test",
         cFiles = [ "invtrig_test.c" ],
+        addLibraries = ["m"],
         omitCFlags = [ "-std=c99", "-Wmissing-prototypes", "-Wmissing-declarations", "-Wimplicit-function-declaration", "-Werror" ]
     },
     build application {
index 2a0a75e..7e6dd1c 100644 (file)
@@ -44,7 +44,7 @@ errval_t install_user_managed_pdpt(genvaddr_t *base, void **ptable)
     if (err_is_fail(err)) {
         return err;
     }
-    err = cap_retype(pdpt_cap, pdpt_ram, ObjType_VNode_x86_64_pdpt, BASE_PAGE_BITS);
+    err = cap_retype(pdpt_cap, pdpt_ram, 0, ObjType_VNode_x86_64_pdpt, BASE_PAGE_SIZE, 1);
     if (err_is_fail(err)) {
         return err;
     }
@@ -58,7 +58,11 @@ errval_t install_user_managed_pdpt(genvaddr_t *base, void **ptable)
     };
     size_t pml4e = X86_64_PML4_BASE(base_);
     printf("our pml4e is: %zu\n", pml4e);
-    err = vnode_map(pml4, pdpt_cap, pml4e, PTABLE_ACCESS_DEFAULT, 0, 1);
+    struct capref mapping;
+    err = slot_alloc(&mapping);
+    assert(err_is_ok(err));
+
+    err = vnode_map(pml4, pdpt_cap, pml4e, PTABLE_ACCESS_DEFAULT, 0, 1, mapping);
     if (err_is_fail(err)) {
         return err;
     }
index 17d5aca..0873fa1 100644 (file)
@@ -36,6 +36,7 @@
 #ifdef BARRELFISH
 # include <barrelfish/barrelfish.h>
 # include <lwip/tcpip.h>
+# include <lwip/sockets.h>
 #endif /* BARRELFISH */
 
 #define DEFAULT_PORT        4242
index 2b093f3..174646a 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef NKM_DEBUG_H
 #define NKM_DEBUG_H
 
+
 #ifdef NKMTEST_DEBUG_MAP_UNMAP
 #define DEBUG_MAP_UNMAP(...) debug_printf(__VA_ARGS__)
 #else
@@ -27,6 +28,8 @@
 #define DEBUG_INVALID_MAPPINGS(...)
 #endif
 
+#define NKMTEST_DEBUG_MODIFY_FLAGS
+
 #ifdef NKMTEST_DEBUG_MODIFY_FLAGS
 #define DEBUG_MODIFY_FLAGS(...) debug_printf(__VA_ARGS__)
 #else
index 05a8025..eeae117 100644 (file)
 
 #include <barrelfish/barrelfish.h>
 #include <bench/bench.h>
+
+#include <if/octopus_thc.h>
 #include <octopus/octopus.h>
+#include <octopus/trigger.h>
 #include <skb/skb.h>
 
-#include <if/octopus_thc.h>
+
 
 #define MAX_ITERATIONS 500
 struct timestamp {
@@ -55,7 +58,7 @@ static void variable_records(void)
         }
 
         errval_t error_code;
-        char* data = NULL;
+        char data[1024];;
 
         struct octopus_thc_client_binding_t* cl = oct_get_thc_client();
         assert(cl != NULL);
@@ -68,7 +71,7 @@ static void variable_records(void)
             sprintf(buf, "object%zu", get_nr);
 
             timestamps[k].time0 = bench_tsc();
-            cl->call_seq.get(cl, buf, NOP_TRIGGER, &data, &tid, &error_code);
+            cl->call_seq.get(cl, buf, NOP_TRIGGER, data, &tid, &error_code);
             timestamps[k].time1 = bench_tsc();
             if (err_is_fail(error_code)) {
                 DEBUG_ERR(error_code, "get");
@@ -95,7 +98,7 @@ static void add_record(void) {
     assert(cl != NULL);
 
     errval_t error_code;
-    char* ret = NULL;
+    static char ret[1024];
     char* record = "rec_ { attribute: 1 }";
     octopus_trigger_id_t tid;
 
@@ -104,23 +107,22 @@ static void add_record(void) {
 
         for (size_t j = add_records[i - 1]; j < add_records[i]; j++) {
             //printf("add to system: %s\n", record);
-            cl->call_seq.set(cl, record, SET_SEQUENTIAL, NOP_TRIGGER, false, &ret, &tid, &error_code);
+            cl->call_seq.set(cl, record, SET_SEQUENTIAL, NOP_TRIGGER, false, ret, &tid, &error_code);
             assert(ret == NULL);
             if(err_is_fail(error_code)) { DEBUG_ERR(error_code, "add"); exit(0); }
         }
 
         char to_add[100];
         sprintf(to_add, "zzz { attribute: 1 }");
-        char* data;
+        static char data[1024];
         for (size_t k = 0; k < MAX_ITERATIONS; k++) {
             timestamps[k].time0 = bench_tsc();
-            cl->call_seq.set(cl, to_add, SET_DEFAULT, NOP_TRIGGER, false, &data, &tid, &error_code);
+            cl->call_seq.set(cl, to_add, SET_DEFAULT, NOP_TRIGGER, false, data, &tid, &error_code);
             timestamps[k].time1 = bench_tsc();
             if (err_is_fail(error_code)) {
                 DEBUG_ERR(error_code, "set");
                 exit(0);
             }
-            free(data);
 
             cl->call_seq.del(cl, to_add, NOP_TRIGGER, &tid, &error_code);
             if (err_is_fail(error_code)) {
@@ -148,7 +150,7 @@ static void one_record(void)
     assert(err_is_ok(err));
 
     errval_t error_code;
-    char* data = NULL;
+    static char data[1024];
 
     struct octopus_thc_client_binding_t* cl = oct_get_thc_client();
     octopus_trigger_id_t tid;
@@ -156,11 +158,10 @@ static void one_record(void)
     for (size_t i = 0; i < MAX_ITERATIONS; i++) {
 
         timestamps[i].time0 = bench_tsc();
-        cl->call_seq.get(cl, "object0", NOP_TRIGGER, &data, &tid, &error_code);
+        cl->call_seq.get(cl, "object0", NOP_TRIGGER, data, &tid, &error_code);
         timestamps[i].time1 = bench_tsc();
 
         assert(err_is_ok(error_code));
-        free(data);
         for(size_t j=0; j<1<<20; j++) {}
     }
 
@@ -181,17 +182,15 @@ static void unnamed_record(void)
     struct octopus_thc_client_binding_t* cl = oct_get_thc_client();
     assert(cl != NULL);
 
-    char* data = NULL;
+    static char data[1024];
     errval_t error_code;
     for (size_t i = 0; i < MAX_ITERATIONS; i++) {
 
         timestamps[i].time0 = bench_tsc();
-        cl->call_seq.get(cl, "_ { attr1: 'bla', attr2: 12.0 }", NOP_TRIGGER, &data, &tid, &error_code);
+        cl->call_seq.get(cl, "_ { attr1: 'bla', attr2: 12.0 }", NOP_TRIGGER, data, &tid, &error_code);
         timestamps[i].time1 = bench_tsc();
 
         assert(err_is_ok(error_code));
-        free(data);
-
         for(size_t j=0; j<1<<20; j++) {}
     }
 
index 4c3abb9..1951f23 100644 (file)
 
 #include <barrelfish/barrelfish.h>
 #include <bench/bench.h>
-#include <octopus/octopus.h>
+
 #include <skb/skb.h>
 
 #include <if/octopus_thc.h>
+#include <octopus/octopus.h>
+#include <octopus/trigger.h>
+
 
 /**
  * Usage: d2bench1 <#clients> <get|set>
@@ -51,20 +54,19 @@ int main(int argc, char** argv)
     err = oct_barrier_enter("d2bench1", &barrier, clients);
     assert(err_is_ok(err));
 
-    char* reply;
+    char reply[1024];
     errval_t error_code;
 
     bool stopped = false;
     if (strcmp(argv[2], "get") == 0) {
                while ( !stopped ) {
-                       cl->call_seq.get(cl, "rec", NOP_TRIGGER, &reply, &tid, &error_code);
-                       free(reply);
+                       cl->call_seq.get(cl, "rec", NOP_TRIGGER, reply, &tid, &error_code);
                        //DEBUG_ERR(error_code, "got record");
                }
     }
     else if (strcmp(argv[2], "set") == 0) {
                while ( !stopped ) {
-                       cl->call_seq.set(cl, record, SET_DEFAULT, NOP_TRIGGER, false, &reply, &tid, &error_code);
+                       cl->call_seq.set(cl, record, SET_DEFAULT, NOP_TRIGGER, false, reply, &tid, &error_code);
                        //assert(reply == NULL);
                        //DEBUG_ERR(error_code, "set record");
                }
index e06cb3b..232f8e0 100644 (file)
 
 #include <barrelfish/barrelfish.h>
 #include <bench/bench.h>
-#include <octopus/octopus.h>
+
 #include <skb/skb.h>
 
 #include <if/octopus_thc.h>
+#include <octopus/octopus.h>
+#include <octopus/trigger.h>
 
 #define MAX_ITERATIONS 500
 struct timestamp {
@@ -149,21 +151,20 @@ static void no_name_get_worstcase(void)
         struct octopus_thc_client_binding_t* cl = oct_get_thc_client();
         assert(cl != NULL);
         errval_t error_code;
-        char* record;
+        static char record[1024];
 
         for (size_t j = records[i - 1]; j < records[i]; j++) {
             construct_record(5);
-            cl->call_seq.set(cl, buf, SET_SEQUENTIAL, NOP_TRIGGER, false, &record, &tid, &error_code);
+            cl->call_seq.set(cl, buf, SET_SEQUENTIAL, NOP_TRIGGER, false, record, &tid, &error_code);
             if(err_is_fail(error_code)) { DEBUG_ERR(error_code, "set"); exit(0); }
         }
 
         for (size_t k = 0; k < MAX_ITERATIONS; k++) {
             timestamps[k].time0 = bench_tsc();
-            cl->call_seq.get(cl, query, NOP_TRIGGER, &record, &tid, &error_code);
+            cl->call_seq.get(cl, query, NOP_TRIGGER, record, &tid, &error_code);
             timestamps[k].time1 = bench_tsc();
             if (err_is_fail(error_code)) { DEBUG_ERR(error_code, "get"); exit(0); }
             //timestamps[k].count = atoll(strrchr(record, '}')+1);
-            free(record);
         }
 
         for (size_t k = 0; k < MAX_ITERATIONS; k++) {
index ded3d6e..12ee713 100644 (file)
 #include <stdio.h>
 
 #include <octopus/octopus.h>
+#include <octopus/definitions.h>
+#include <octopus/pubsub.h>
 
 #include "common.h"
 
 static const char* barrier_name = "d2pubsub_test";
 static struct thread_sem ts;
 
-static void message_handler(oct_mode_t mode, char* record, void* st)
+static void message_handler(oct_mode_t mode, const char* record, void* st)
 {
     size_t* received = (size_t*) st;
 
@@ -40,7 +42,6 @@ static void message_handler(oct_mode_t mode, char* record, void* st)
 
 
         free(name);
-        free(record);
     }
     else if (mode & OCT_REMOVED) {
         debug_printf("OCT_REMOVED set...\n");
index 71abcd1..083f16b 100644 (file)
 #include <barrelfish/deferred.h>
 
 #include <skb/skb.h>
-#include <octopus/octopus.h>
 
+#include <if/octopus_defs.h>
 #include <if/octopus_thc.h>
 
+#include <octopus/octopus.h>
+#include <octopus/definitions.h>
+#include <octopus/pubsub.h>
+#include <octopus/trigger.h>
+
+
+
 #include "common.h"
 
-static void trigger_handler(octopus_mode_t m, char* record, void* state)
+static void trigger_handler(oct_mode_t m, const char*  record, void* state)
 {
     size_t* received = (size_t*) state;
     *received = *received + 1;
@@ -35,10 +42,9 @@ static void trigger_handler(octopus_mode_t m, char* record, void* state)
 
     assert(m & OCT_ON_DEL);
     assert(m & OCT_REMOVED);
-    free(record);
 }
 
-static void persistent_trigger(octopus_mode_t m, char* record, void* state) {
+static void persistent_trigger(oct_mode_t m, const char* record, void* state) {
     size_t* received = (size_t*) state;
     *received = *received + 1;
 
@@ -52,8 +58,6 @@ static void persistent_trigger(octopus_mode_t m, char* record, void* state) {
         debug_printf("persistent trigger CLEANUP: %s\n", record);
         assert(record == NULL);
     }
-
-    free(record);
 }
 
 int main(int argc, char *argv[])
@@ -76,14 +80,13 @@ int main(int argc, char *argv[])
             octopus_BINDING_EVENT, OCT_ON_DEL, trigger_handler, &received);
 
     errval_t error_code = SYS_ERR_OK;
-    char* output = NULL;
-    err = c->call_seq.get(c, "r'^obj.$' { attr: 3 } ", record_deleted, &output,
+    char output[256];
+    err = c->call_seq.get(c, "r'^obj.$' { attr: 3 } ", record_deleted, output,
             &tid, &error_code);
     ASSERT_ERR_OK(err);
     ASSERT_ERR_OK(error_code);
     ASSERT_STRING(output, "obj3 { attr: 3 }");
     debug_printf("tid is: %"PRIu64"\n", tid);
-    free(output);
 
     oct_del("obj3");
     while (received != 1) {
@@ -92,11 +95,11 @@ int main(int argc, char *argv[])
 
     received = 0;
     tid = 0;
-    octopus_mode_t m = OCT_ON_SET | OCT_ON_DEL | OCT_PERSIST;
+    oct_mode_t m = OCT_ON_SET | OCT_ON_DEL | OCT_PERSIST;
     octopus_trigger_t ptrigger = oct_mktrigger(SYS_ERR_OK,
             octopus_BINDING_EVENT, m, persistent_trigger, &received);
-    output = NULL;
-    err = c->call_seq.get(c, "obj2", ptrigger, &output,
+    memset(output, 0, sizeof(output));
+    err = c->call_seq.get(c, "obj2", ptrigger, output,
             &tid, &error_code);
     ASSERT_ERR_OK(err);
     ASSERT_ERR_OK(error_code);
index 7d77624..6ff8a5a 100644 (file)
@@ -108,8 +108,7 @@ bf_protect(struct bf_mem *bfm, size_t off, size_t len,
 static void
 bf_handler(enum exception_type type, int subtype,
            void *vaddr,
-           arch_registers_state_t *regs,
-           arch_registers_fpu_state_t *fpuregs)
+           arch_registers_state_t *regs)
 {
     assert(type == EXCEPT_PAGEFAULT);
     assert(subtype == PAGEFLT_WRITE);
index c9eaebd..0a2d360 100644 (file)
@@ -18,7 +18,8 @@
 
 #include <sched.h> /* CPU_SET et. al. */
 #include <pthread.h>
-
+#include <pthread_np.h>
+#include <sys/cpuset.h>
 #ifdef BARRELFISH
 #include <barrelfish/barrelfish.h>
 #include <octopus/octopus.h>
@@ -75,7 +76,7 @@ static int pthread_setaffinity_test(void) {
     pthread_t tid;
     pthread_attr_t attr;
     pthread_attr_init(&attr);
-    cpu_set_t set;
+    cpuset_t set;
 
     for (size_t rep = 0; rep < cpu_count; rep++) {
         printf("Create a new thread on core %zu\n", rep);
@@ -83,7 +84,7 @@ static int pthread_setaffinity_test(void) {
 
         CPU_ZERO(&set);
         CPU_SET(rep, &set);
-        pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &set);
+        pthread_attr_setaffinity_np(&attr, sizeof(cpuset_t), &set);
         int rv = pthread_create(&tid, &attr, prj_thread, NULL);
         if (rv){
             printf("[ERROR] return code from pthread_create() is %d\n", rv);
@@ -132,13 +133,13 @@ static int pthread_mutex_performance(void) {
     pthread_attr_t attr;
     pthread_attr_init(&attr);
     pthread_mutex_init(&lock, NULL);
-    cpu_set_t set;
+    cpuset_t set;
 
     for (size_t rep = 0; rep < cpu_count; rep++) {
         printf("Create a new thread on core %zu\n", rep);
         CPU_ZERO(&set);
         CPU_SET(rep, &set);
-        pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &set);
+        pthread_attr_setaffinity_np(&attr, sizeof(cpuset_t), &set);
         int rv = pthread_create(&tid[rep], &attr, mutex_increment, NULL);
         if (rv){
             printf("[ERROR] return code from pthread_create() is %d\n", rv);
index 53637aa..b4da651 100644 (file)
@@ -18,6 +18,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <fcntl.h>
 
 #define SHELL "fish"
 #define BUFFER_SIZE 128
index 6ff8268..d98954c 100644 (file)
@@ -93,6 +93,8 @@ static int cmp_dump_info(const void *arg1, const void *arg2)
 #define BUFSIZE 8192
 void dump_pmap(struct pmap *pmap)
 {
+    errval_t err;
+
     struct pmap_dump_info *buf = calloc(BUFSIZE, sizeof(struct pmap_dump_info));
     size_t items_written;
 
@@ -109,7 +111,7 @@ void dump_pmap(struct pmap *pmap)
         assert(err_is_ok(err));
         printf(PRIfmtPTIDX": 0x%"PRIxGENPADDR", 0x%"PRIxGENVADDR", 0x%zx\n",
                     GET_PTIDX(info),
-                    fi.base, info->offset, ((size_t)1)<<fi.bits);
+                    fi.base, info->offset, fi.bytes);
     }
     printf("\n");
 
index d15d41a..d9f849d 100644 (file)
@@ -212,11 +212,11 @@ static errval_t msg_open_cb(xphi_dom_id_t domain,
     }
 
     debug_printf("msg_open_cb | Frame base: %016lx, size=%lx\n", id.base,
-                 1UL << id.bits);
+                 id.bytes);
 
-    assert((1UL << id.bits) >= XPHI_BENCH_FRAME_SIZE_CARD);
+    assert(id.bytes >= XPHI_BENCH_FRAME_SIZE_CARD);
 
-    err = vspace_map_one_frame(&card_buf, 1UL << id.bits, msgframe, NULL, NULL);
+    err = vspace_map_one_frame(&card_buf, id.bytes, msgframe, NULL, NULL);
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "Could not map the frame");
     }
@@ -227,7 +227,7 @@ static errval_t msg_open_cb(xphi_dom_id_t domain,
 
     card_base = id.base;
 
-    card_frame_sz = (1UL << id.bits);
+    card_frame_sz = (id.bytes);
 
     init_buffer_c0();
 
index a748d16..de86a2e 100644 (file)
 --------------------------------------------------------------------------
 
 
-[ build application { 
-    target = "tests/xomp_test", 
-    cFiles = [ 
+[ build application {
+    target = "tests/xomp_test",
+    cFiles = [
       "main.c",
-      "processing.c" 
+      "processing.c"
     ],
-    addCFlags = [ 
-      "-DBOMP", 
-      "-fopenmp" 
+    addCFlags = [
+      "-DBOMP",
+      "-fopenmp"
     ],
-    addLibraries = [ 
-      "bomp", 
-      "bench", 
-      "trace" 
+    addLibraries = [
+      "bomp",
+      "bench",
+      "trace"
     ],
-    architectures = [ 
-      "x86_64", 
-      "k1om" 
-    ] 
+    architectures = [
+      "x86_64",
+      "k1om"
+    ]
   },
-  
-  build application { 
-    target = "tests/xomp_test_cpp", 
-    cxxFiles = [ 
+
+  build application {
+    target = "tests/xomp_test_cpp",
+    cxxFiles = [
       "main.cpp"
     ],
-    cFiles = [ 
-      "processing.c" 
+    cFiles = [
+      "processing.c"
     ],
-    addCFlags = [ 
-      "-DBOMP", 
-      "-fopenmp" 
+    addCxxFlags = [
+      "-DBOMP",
+      "-fopenmp"
     ],
-    addLibraries = [ 
-      "bomp", 
-      "bench", 
-      "trace" 
+    addLibraries = [
+      "bomp",
+      "bench",
+      "trace"
     ],
-    architectures = [ 
-      "x86_64", 
-      "k1om" 
-    ] 
+    architectures = [
+      "x86_64",
+      "k1om"
+    ]
   }
 ]
index dc091d1..07eef74 100644 (file)
@@ -23,7 +23,7 @@ void do_process(uint32_t *src,
     }
 #pragma omp parallel for
     for (int j = 0; j < IT; j++) {
-        for (int i = 0; i < MAX; i += IT) {
+        for (int i = 0; i < WORK_MAX; i += IT) {
             dst[i + j] = src[i + j];
         }
     }
index 3fce296..e9bfd2f 100644 (file)
@@ -6,6 +6,7 @@
  * If you do not find this file, copies can be found by writing to:
  * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
  */
+
 extern "C" {
     #include <barrelfish_kpi/types.h>
     #include <errors/errno.h>
@@ -13,7 +14,11 @@ extern "C" {
     #include "xomptest.h"
 }
 
+/// XXX: there seems to be some issues with this.., disabling this warning for now
+#pragma GCC diagnostic ignored "-Wshadow"
 #include <iostream>
+#pragma GCC diagnostic error "-Wshadow"
+
 
 #include <omp.h>
 
@@ -28,7 +33,7 @@ void do_process(uint32_t *src,
     }
 #pragma omp parallel for
     for (unsigned int j = 0; j < IT; j++) {
-        for (unsigned int i = 0; i < MAX; i += IT) {
+        for (unsigned int i = 0; i < WORK_MAX; i += IT) {
             dst[i + j] = src[i + j];
         }
     }
index c1c9f9e..f7ca79b 100644 (file)
@@ -25,7 +25,7 @@ static errval_t initialize_master(int argc,
                                   char *argv[])
 {
     errval_t err;
-    debug_printf("Initializing Master: elements:%lu\n", MAX);
+    debug_printf("Initializing Master: elements:%lu\n", WORK_MAX);
 
     struct capref frame;
     err = frame_alloc(&frame, WORK_SIZE, NULL);
@@ -46,9 +46,9 @@ static errval_t initialize_master(int argc,
     }
 
     asrc = addr;
-    adst = asrc + MAX;
+    adst = asrc + WORK_MAX;
 
-    for (uint32_t i = 0; i < MAX; ++i) {
+    for (uint32_t i = 0; i < WORK_MAX; ++i) {
         asrc[i] = i;
         adst[i] = 0;
     }
@@ -122,7 +122,7 @@ errval_t start_master(int argc,
         }
         tsc_start = bench_tsc();
         for (int j = 0; j < IT; j++) {
-            for (int i = 0; i < MAX; i += IT) {
+            for (int i = 0; i < WORK_MAX; i += IT) {
                 adst[i + j] = asrc[i + j];
             }
         }
@@ -142,7 +142,7 @@ errval_t start_master(int argc,
     debug_printf("=========================================================\n");
     ctl = bench_ctl_init(BENCH_MODE_FIXEDRUNS, 1, BENCH_N_RUNS);
     do {
-        for (uint32_t i = 0; i < MAX; ++i) {
+        for (uint32_t i = 0; i < WORK_MAX; ++i) {
             adst[i] = 0;
         }
         if (!(run % 10)) {
@@ -153,7 +153,7 @@ errval_t start_master(int argc,
         tsc_end = bench_tsc();
         result = calculate_time(tsc_start, tsc_end);
         run++;
-        for (uint32_t i = 0; i < MAX; ++i) {
+        for (uint32_t i = 0; i < WORK_MAX; ++i) {
             if (adst[i] != asrc[i]) {
                 USER_PANIC("test failed: data[%u]=%u, expected %u\n", i, adst[i],
                        asrc[i]);
@@ -185,7 +185,7 @@ void do_process_single(uint32_t *src,
                        uint32_t *dst)
 {
     for (int j = 0; j < IT; j++) {
-        for (int i = 0; i < MAX; i += IT) {
+        for (int i = 0; i < WORK_MAX; i += IT) {
             dst[i + j] = src[i + j];
         }
     }
index 9b02b5c..3b0e5b0 100644 (file)
@@ -12,8 +12,8 @@
 
 // cache-line size / sizeof(int) == 64 Bytes / 4 Bytes == 16
 #define IT 16
-#define MAX (1UL<<27)
-#define WORK_SIZE   (2UL * MAX * sizeof(uint32_t))
+#define WORK_MAX (1UL<<27)
+#define WORK_SIZE   (2UL * WORK_MAX * sizeof(uint32_t))
 
 #define BENCH_N_RUNS 100
 #define NTHREADS 30
diff --git a/usr/vnode_map_32/Hakefile b/usr/vnode_map_32/Hakefile
deleted file mode 100644 (file)
index fc7e5c6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---------------------------------------------------------------------------
--- Copyright (c) 2013, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Universitaetsstr. 6, CH-8092 Zurich. Attn: Systems Group.
---
--- Hakefile for /usr/vnode_map_test
--- 
---------------------------------------------------------------------------
-
-[ build application { target = "vnode_map_32",
-                      cFiles = [ "vnode_map_32.c" ]
-                    }
-]
-
diff --git a/usr/vnode_map_32/vnode_map_32.c b/usr/vnode_map_32/vnode_map_32.c
deleted file mode 100644 (file)
index c07d1ee..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * \file
- * \brief Test program for large page code
- * 
- * For this to work, Barrelfish needs to be compiled with the
- * PSE == true configuration enabled in hake/config.hs
- */
-
-/*
- * Copyright (c) 2013, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <barrelfish/barrelfish.h>
-#include <stdio.h>
-#include <limits.h>
-
-#define SAFE_VADDR (genvaddr_t)0x320000//(8ULL<<18)
-#define SAFE_PMAP_ADDR (genvaddr_t)(9ULL<<39)
-
-//4M/2M (in PAE)
-#define DEFAULT_SIZE X86_32_LARGE_PAGE_SIZE
-
-    
-static vregion_flags_t PMAP_DEFAULT_ACCESS =
-    VREGION_FLAGS_READ_WRITE;
-
-static void test_region(uint32_t *buf, size_t size)
-{
-    int j = 0;
-    for (int i = 0; i < size; i+=4) {
-        j+=4;
-        if( (size-j) < 200)
-        {
-        printf("%i, ", i);
-        }
-        
-        buf[i/4] = i;
-    }
-    for (int i = 0; i < size; i+=4) {
-        assert(buf[i/4] == i);
-    }
-
-    printf("\n\n");
-}
-
-
-int main(void)
-{
-    struct capref frame, smallframe;
-    size_t bytes = DEFAULT_SIZE;
-    size_t bits = 4*1024;
-    uint32_t address;
-    struct memobj a;
-    errval_t err;
-    printf("\tpagesize: %i, \taddr: %i\n", (int)bytes, (int)SAFE_VADDR);
-
-    //get 4k frame cap
-    err = frame_alloc(&smallframe, bits, &bits);
-    assert(err_is_ok(err));
-    assert(bits >= 4*1024);
-    // get 2M/4M frame cap
-    err = frame_alloc(&frame, bytes, &bytes);
-    assert(err_is_ok(err));
-    assert(bytes >= DEFAULT_SIZE);
-
-//test determine_addr as address obtainer
-#if 1
-    printf("determine_addr 4k\n");
-    
-    //determine address
-    a.size = bits;
-    address = 0;
-    struct pmap *pmap = get_current_pmap();
-    err = pmap->f.determine_addr_raw(pmap, a.size, BASE_PAGE_SIZE, (genvaddr_t*)&address);
-    printf("address: %x\n", (unsigned int) address);
-    if (err_is_fail(err))
-    {
-        printf("error in determine_addr: %s\n", err_getstring(err));
-        exit(1);
-    }
-    
-    err = pmap->f.map(pmap, address, smallframe, 0, bits, PMAP_DEFAULT_ACCESS, NULL, &bits);
-    if (err_is_fail(err))
-    {
-        printf("error in pmap: %s\n", err_getstring(err));
-        exit(1);
-    }
-    test_region((uint32_t*)address, bits);
-    
-    err = pmap->f.unmap(pmap, address, bits, NULL);
-    if (err_is_fail(err))
-    {
-        printf("error in unmap: %s\n", err_getstring(err));
-        exit(1);
-    } 
-#endif
-
-    
-// test determine_addr_raw for large pages
-// also test unmap on fast path
-#if 1
-    printf("determine_addr 2m\n");
-    bytes = DEFAULT_SIZE;
-    err = frame_alloc(&frame, bytes, &bytes);
-    assert(err_is_ok(err));
-    assert(bytes >= DEFAULT_SIZE);
-    
-    a.size = bytes;
-    printf("a.size: %x, %i\n", (unsigned int) a.size, (unsigned int) a.size);
-    address = 0;
-    pmap = get_current_pmap();
-    err = pmap->f.determine_addr_raw(pmap, a.size, LARGE_PAGE_SIZE, (genvaddr_t*)&address);
-    printf("address: %lx\n", (uint32_t) address);
-    if(err_is_fail(err))
-    {
-        printf("error in determine_addr: %s\n", err_getstring(err));
-        exit(1);
-    }
-
-//for loop to test unmap
-for(int i=0; i<10; ++i) {
-printf("map %i\n", i);    
-    err = pmap->f.map(pmap, address, frame, 0, bytes, PMAP_DEFAULT_ACCESS | 0x0100, NULL, &bytes);
-    if (err_is_fail(err))
-    {
-        printf("error in pmap: %s\n", err_getstring(err));
-        exit(1);
-    }
-    printf("address: %lx\n", (uint32_t) address);
-    test_region((uint32_t*)address, DEFAULT_SIZE);
-    
-    err = pmap->f.unmap(pmap, address, bytes, NULL);
-    if (err_is_fail(err))
-    {
-        printf("error in unmap: %s\n", err_getstring(err));
-        exit(1);
-    } 
-}//endfor
-#endif
-
-
-// test determine_addr_raw for multiple large pages
-// also test unmap on slow path
-#if 1
-    printf("determine_addr 2m multiple\n");
-    bytes = 30*DEFAULT_SIZE;
-    err = frame_alloc(&frame, bytes, &bytes);
-    assert(err_is_ok(err));
-    assert(bytes >= 30*DEFAULT_SIZE);
-    
-    a.size = bytes;
-    printf("a.size: %x, %i\n", (unsigned int) a.size, (unsigned int) a.size);
-    address = 0;
-    pmap = get_current_pmap();
-    err = pmap->f.determine_addr_raw(pmap, a.size, LARGE_PAGE_SIZE, (genvaddr_t*)&address);
-    printf("address: %lx\n", (uint32_t) address);
-    if(err_is_fail(err))
-    {
-        printf("error in determine_addr: %s\n", err_getstring(err));
-        exit(1);
-    }
-
-//for loop to test unmap
-for(int i=0; i<10; ++i) {
-printf("map %i\n", i);    
-    err = pmap->f.map(pmap, address, frame, 0, bytes, PMAP_DEFAULT_ACCESS | 0x0100, NULL, &bytes);
-    if (err_is_fail(err))
-    {
-        printf("error in pmap: %s\n", err_getstring(err));
-        exit(1);
-    }
-    printf("address: %lx\n", (uint32_t) address);
-    test_region((uint32_t*)address, bytes);
-    
-    err = pmap->f.unmap(pmap, address, bytes, NULL);
-    if (err_is_fail(err))
-    {
-        printf("error in unmap: %s\n", err_getstring(err));
-        exit(1);
-    } 
-}//endfor
-#endif
-    printf("exited successfully\n");
-    return 0;
-}