# HG changeset patch # User Thomas Sanchez # Date 1325957420 -3600 # Node ID 052f9209ca09299425f29a13f5269d60bbdaabab # Parent ecf2a0e61fffa4a8ace689e55b276117173c6ac4 rathaxes:: add the ifs diff -r ecf2a0e61fff -r 052f9209ca09 rathaxes_start_to_implement_pci_stuff_in_the_lkm.patch --- a/rathaxes_start_to_implement_pci_stuff_in_the_lkm.patch Sat Jan 07 12:46:45 2012 +0100 +++ b/rathaxes_start_to_implement_pci_stuff_in_the_lkm.patch Sat Jan 07 18:30:20 2012 +0100 @@ -1,10 +1,10 @@ # HG changeset patch -# Parent 873b66890128280637d97a24221258bb297a1ac8 +# Parent c08fffb84a93af26c6155c9776c5628fd556064b rathaxes: start to implement the PCI registration part in the LKM sample -diff --git a/rathaxes/samples/lkm/CMakeLists.txt b/rathaxes/samples/lkm/CMakeLists.txt ---- a/rathaxes/samples/lkm/CMakeLists.txt -+++ b/rathaxes/samples/lkm/CMakeLists.txt +diff -r c08fffb84a93 rathaxes/samples/lkm/CMakeLists.txt +--- a/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 18:10:31 2012 +0100 ++++ b/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 18:13:48 2012 +0100 @@ -1,3 +1,7 @@ ADD_RATHAXES_SOURCES(lkm lkm.rtx - RTI log.rti lkm.rti @@ -15,9 +15,9 @@ +# We can't name lkm since it's already used as the target name to generate the +# source (with ADD_RATHAXES_SOURCES). +ADD_RATHAXES_LKM(lkm_hello lkm) -diff --git a/rathaxes/samples/lkm/lkm.blt b/rathaxes/samples/lkm/lkm.blt ---- a/rathaxes/samples/lkm/lkm.blt -+++ b/rathaxes/samples/lkm/lkm.blt +diff -r c08fffb84a93 rathaxes/samples/lkm/lkm.blt +--- a/rathaxes/samples/lkm/lkm.blt Sat Jan 07 18:10:31 2012 +0100 ++++ b/rathaxes/samples/lkm/lkm.blt Sat Jan 07 18:13:48 2012 +0100 @@ -1,8 +1,10 @@ with LKM { @@ -82,9 +82,9 @@ } } } -diff --git a/rathaxes/samples/lkm/lkm.rti b/rathaxes/samples/lkm/lkm.rti ---- a/rathaxes/samples/lkm/lkm.rti -+++ b/rathaxes/samples/lkm/lkm.rti +diff -r c08fffb84a93 rathaxes/samples/lkm/lkm.rti +--- a/rathaxes/samples/lkm/lkm.rti Sat Jan 07 18:10:31 2012 +0100 ++++ b/rathaxes/samples/lkm/lkm.rti Sat Jan 07 18:13:48 2012 +0100 @@ -1,8 +1,10 @@ interface LKM { @@ -112,9 +112,9 @@ + provided chunk LKM::code; } } -diff --git a/rathaxes/samples/lkm/lkm.rtx b/rathaxes/samples/lkm/lkm.rtx ---- a/rathaxes/samples/lkm/lkm.rtx -+++ b/rathaxes/samples/lkm/lkm.rtx +diff -r c08fffb84a93 rathaxes/samples/lkm/lkm.rtx +--- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 18:10:31 2012 +0100 ++++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 18:13:48 2012 +0100 @@ -1,19 +1,35 @@ -device LKM use LKM, Log +device LKM use LKM, PCI, Log @@ -152,11 +152,10 @@ + PCI::vendor_id = 0x8086; + PCI::product_id = 0x100f; } -diff --git a/rathaxes/samples/lkm/pci.blt b/rathaxes/samples/lkm/pci.blt -new file mode 100644 ---- /dev/null -+++ b/rathaxes/samples/lkm/pci.blt -@@ -0,0 +1,129 @@ +diff -r c08fffb84a93 rathaxes/samples/lkm/pci.blt +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/rathaxes/samples/lkm/pci.blt Sat Jan 07 18:13:48 2012 +0100 +@@ -0,0 +1,124 @@ +with PCI, LKM, Log +{ + template type PCI::Device() @@ -206,8 +205,8 @@ + ${PCI::Device} *dev = NULL; + + err = pci_enable_device(pdev); -+// if (err < 0) /* `if' doesn't work */ -+// goto fail; ++ if (err < 0) ++ goto fail; + + ${pointcut ::IMPLEMENTATION}; + @@ -266,15 +265,10 @@ + * So how do we use the return value in the parent context? + */ + pci_register_driver(&rtx_pci_driver); -+ /* -+ * if (pci_register_driver(&rtx_pci_driver)) -+ * { -+ * `if' still doesn't work. -+ * -+ * Also, can I call the Log interface from here? -+ * ${Log::info("Message")}; doesn't seem to work. -+ * } -+ */ ++ if (pci_register_driver(&rtx_pci_driver)) ++ { ++ ${Log::info("Message")}; ++ } + } + } + @@ -286,10 +280,9 @@ + } + } +} -diff --git a/rathaxes/samples/lkm/pci.rti b/rathaxes/samples/lkm/pci.rti -new file mode 100644 ---- /dev/null -+++ b/rathaxes/samples/lkm/pci.rti +diff -r c08fffb84a93 rathaxes/samples/lkm/pci.rti +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/rathaxes/samples/lkm/pci.rti Sat Jan 07 18:13:48 2012 +0100 @@ -0,0 +1,30 @@ +interface PCI : LKM +{ diff -r ecf2a0e61fff -r 052f9209ca09 rathaxes_start_to_implement_the_ethernet_subsystem_in_the_lkm.patch --- a/rathaxes_start_to_implement_the_ethernet_subsystem_in_the_lkm.patch Sat Jan 07 12:46:45 2012 +0100 +++ b/rathaxes_start_to_implement_the_ethernet_subsystem_in_the_lkm.patch Sat Jan 07 18:30:20 2012 +0100 @@ -1,10 +1,10 @@ # HG changeset patch -# Parent 5c8a128a8804aa592e3ccc74e86e109d0b577896 +# Parent 2d1319eabf8acf2a7afeb6c8061d7a2c4793655f rathaxes: start to implement the Ethernet subsystem in linux LKM sample -diff -r 5c8a128a8804 rathaxes/samples/lkm/CMakeLists.txt ---- a/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 11:23:27 2012 +0100 -+++ b/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 12:15:32 2012 +0100 +diff -r 2d1319eabf8a rathaxes/samples/lkm/CMakeLists.txt +--- a/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 18:13:48 2012 +0100 ++++ b/rathaxes/samples/lkm/CMakeLists.txt Sat Jan 07 18:27:27 2012 +0100 @@ -1,6 +1,6 @@ ADD_RATHAXES_SOURCES(lkm lkm.rtx - RTI log.rti lkm.rti pci.rti @@ -14,10 +14,10 @@ # We can't name lkm since it's already used as the target name to generate the # source (with ADD_RATHAXES_SOURCES). -diff -r 5c8a128a8804 rathaxes/samples/lkm/ethernet.blt +diff -r 2d1319eabf8a rathaxes/samples/lkm/ethernet.blt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 12:15:32 2012 +0100 -@@ -0,0 +1,164 @@ ++++ b/rathaxes/samples/lkm/ethernet.blt Sat Jan 07 18:27:27 2012 +0100 +@@ -0,0 +1,173 @@ +with Ethernet, PCI, LKM +{ + template type Ethernet::Device() @@ -133,10 +133,16 @@ + typedef int ${Ethernet::Device}; + ${Ethernet::Device} *rtx_ether_ctx; + struct net_device *net_dev; ++ int error; + ++ error = 0; + net_dev = alloc_etherdev(sizeof(*rtx_ether_ctx)); -+ //if (net_dev == NULL) -+ // How should we raise the error in the parent context? ++ if (net_dev == 0) ++ { ++ //Log::info("Cannot allocate memory"); ++ // is it the thing to do? ++ return -ENOMEM; ++ } + strlcpy(net_dev->name, ${config.ifname}, sizeof(net_dev->name)); + net_dev->irq = pdev->irq; + // Maybe we should try ${rtx_ether_ctx.init()} here: @@ -156,9 +162,12 @@ + //SET_NETDEV_DEV(net_dev, &${pdev}->dev); + SET_NETDEV_DEV(net_dev, &pdev->dev); + net_dev->netdev_ops = &rtx_ether_ops; -+ -+ /* if (*/register_netdev(net_dev);/*)*/ -+ // Handle the error ++ if ((error = register_netdev(net_dev))) ++ { ++ // Log::info("Cannot register the driver"); ++ // is it the thing to do? ++ return error; ++ } + + /* same problem as above with ${pdev} */ + //pci_set_drvdata(${pdev}, net_dev); @@ -182,9 +191,9 @@ + } + } +} -diff -r 5c8a128a8804 rathaxes/samples/lkm/ethernet.rti +diff -r 2d1319eabf8a rathaxes/samples/lkm/ethernet.rti --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 12:15:32 2012 +0100 ++++ b/rathaxes/samples/lkm/ethernet.rti Sat Jan 07 18:27:27 2012 +0100 @@ -0,0 +1,37 @@ +interface Ethernet : PCI, LKM +{ @@ -223,9 +232,9 @@ + provided chunk ::CALL; + } +} -diff -r 5c8a128a8804 rathaxes/samples/lkm/lkm.rtx ---- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 11:23:27 2012 +0100 -+++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 12:15:32 2012 +0100 +diff -r 2d1319eabf8a rathaxes/samples/lkm/lkm.rtx +--- a/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 18:13:48 2012 +0100 ++++ b/rathaxes/samples/lkm/lkm.rtx Sat Jan 07 18:27:27 2012 +0100 @@ -1,13 +1,30 @@ device LKM use LKM, PCI, Log { @@ -266,9 +275,9 @@ + + Ethernet::ifname = "rtx%d"; } -diff -r 5c8a128a8804 rathaxes/samples/lkm/pci.blt ---- a/rathaxes/samples/lkm/pci.blt Sat Jan 07 11:23:27 2012 +0100 -+++ b/rathaxes/samples/lkm/pci.blt Sat Jan 07 12:15:32 2012 +0100 +diff -r 2d1319eabf8a rathaxes/samples/lkm/pci.blt +--- a/rathaxes/samples/lkm/pci.blt Sat Jan 07 18:13:48 2012 +0100 ++++ b/rathaxes/samples/lkm/pci.blt Sat Jan 07 18:27:27 2012 +0100 @@ -11,15 +11,12 @@ chunk ::decl() @@ -317,7 +326,7 @@ - ${PCI::Device} *dev = NULL; err = pci_enable_device(pdev); - // if (err < 0) /* `if' doesn't work */ + if (err < 0) @@ -52,8 +55,6 @@ ${pointcut ::IMPLEMENTATION};