summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasilii Chernov <vchernov@inr.ru>2016-03-02 08:48:24 +0100
committerVasilii Chernov <vchernov@inr.ru>2016-03-02 08:48:24 +0100
commit8eca0564a1dd6aac125086a244687b4813a1fd86 (patch)
tree462919b3c3a3ebe833b3b7215c5a9399e5da7f60
parent269b0985bd5830e27f6dedb04a05d76f52acb68c (diff)
parentadc657ebcd01ecc2cc5f110453ef00dffde2d5c0 (diff)
downloadpcitool-8eca0564a1dd6aac125086a244687b4813a1fd86.tar.gz
pcitool-8eca0564a1dd6aac125086a244687b4813a1fd86.tar.bz2
pcitool-8eca0564a1dd6aac125086a244687b4813a1fd86.tar.xz
pcitool-8eca0564a1dd6aac125086a244687b4813a1fd86.zip
1. Merge with http://ufo.kit.edu/ufo/log/csa/pcitool 359 revision
2. Move api_server to html server
-rw-r--r--CMakeLists.txt22
-rw-r--r--driver/Makefile9
-rw-r--r--driver/README4
-rw-r--r--driver/base.c76
-rw-r--r--driver/base.h2
-rw-r--r--driver/compat.h6
-rw-r--r--driver/ioctl.c20
-rw-r--r--driver/kmem.c14
-rw-r--r--pyserver/api_server.py (renamed from pywrap/api_server.py)0
-rw-r--r--pyserver/html_server.py (renamed from html_server/html_server.py)0
-rw-r--r--pyserver/static/base.css (renamed from html_server/static/base.css)0
-rw-r--r--pyserver/static/check_err.js (renamed from html_server/static/check_err.js)0
-rw-r--r--pyserver/static/codebase/dhtmlx.css (renamed from html_server/static/codebase/dhtmlx.css)0
-rw-r--r--pyserver/static/codebase/dhtmlx.js (renamed from html_server/static/codebase/dhtmlx.js)0
-rw-r--r--pyserver/static/codebase/dhtmlx_deprecated.js (renamed from html_server/static/codebase/dhtmlx_deprecated.js)0
-rw-r--r--pyserver/static/codebase/ext/dhxupload.xap (renamed from html_server/static/codebase/ext/dhxupload.xap)bin23436 -> 23436 bytes
-rw-r--r--pyserver/static/codebase/ext/swfobject.js (renamed from html_server/static/codebase/ext/swfobject.js)0
-rw-r--r--pyserver/static/codebase/ext/uploader.swf (renamed from html_server/static/codebase/ext/uploader.swf)bin3646 -> 3646 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/blank.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/blank.gif)bin56 -> 56 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/but_cut.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/but_cut.gif)bin87 -> 87 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif)bin579 -> 579 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif)bin571 -> 571 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif)bin155 -> 155 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif)bin155 -> 155 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif)bin155 -> 155 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif)bin92 -> 92 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif)bin878 -> 878 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/leaf.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/leaf.gif)bin361 -> 361 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line.gif)bin79 -> 79 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line1.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line1.gif)bin79 -> 79 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif)bin79 -> 79 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line2.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line2.gif)bin74 -> 74 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif)bin76 -> 76 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line3.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line3.gif)bin81 -> 81 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif)bin81 -> 81 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line4.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line4.gif)bin67 -> 67 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif)bin69 -> 69 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/lock.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/lock.gif)bin208 -> 208 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus.gif)bin107 -> 107 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus1.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus1.gif)bin107 -> 107 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus2.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus2.gif)bin119 -> 119 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif)bin121 -> 121 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus3.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus3.gif)bin125 -> 125 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif)bin125 -> 125 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus4.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus4.gif)bin117 -> 117 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif)bin117 -> 117 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus5.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus5.gif)bin111 -> 111 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif)bin111 -> 111 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus.gif)bin111 -> 111 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus1.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus1.gif)bin111 -> 111 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus2.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus2.gif)bin123 -> 123 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif)bin124 -> 124 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus3.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus3.gif)bin128 -> 128 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif)bin128 -> 128 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus4.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus4.gif)bin120 -> 120 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif)bin119 -> 119 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus5.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus5.gif)bin114 -> 114 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif)bin113 -> 113 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/radio_off.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/radio_off.gif)bin213 -> 213 bytes
-rw-r--r--pyserver/static/codebase/imgs/dhxtree_skyblue/radio_on.gif (renamed from html_server/static/codebase/imgs/dhxtree_skyblue/radio_on.gif)bin223 -> 223 bytes
-rw-r--r--pyserver/static/codebase/thirdparty/excanvas/AUTHORS (renamed from html_server/static/codebase/thirdparty/excanvas/AUTHORS)0
-rw-r--r--pyserver/static/codebase/thirdparty/excanvas/COPYING (renamed from html_server/static/codebase/thirdparty/excanvas/COPYING)0
-rw-r--r--pyserver/static/codebase/thirdparty/excanvas/README (renamed from html_server/static/codebase/thirdparty/excanvas/README)0
-rw-r--r--pyserver/static/codebase/thirdparty/excanvas/excanvas.js (renamed from html_server/static/codebase/thirdparty/excanvas/excanvas.js)0
-rw-r--r--pyserver/static/jquery-2.2.1.js (renamed from html_server/static/jquery-2.2.1.js)0
-rw-r--r--pyserver/templates/base.html (renamed from html_server/templates/base.html)0
-rw-r--r--pyserver/templates/property_info.html (renamed from html_server/templates/property_info.html)0
-rw-r--r--pyserver/templates/register_info.html (renamed from html_server/templates/register_info.html)0
-rw-r--r--pyserver/templates/registers/table_cell.html (renamed from html_server/templates/registers/table_cell.html)0
-rw-r--r--pyserver/templates/registers/table_header.html (renamed from html_server/templates/registers/table_header.html)0
-rw-r--r--pyserver/templates/registers/table_scripts.html (renamed from html_server/templates/registers/table_scripts.html)0
-rw-r--r--pyserver/templates/registers_list.html (renamed from html_server/templates/registers_list.html)0
-rw-r--r--pywrap/CMakeLists.txt9
73 files changed, 138 insertions, 24 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4445af7..856e23c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,8 +38,26 @@ find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
if (NOT DISABLE_PYTHON)
- find_package(PythonLibs 2 REQUIRED)
+
+ find_package(PythonLibs 2.7 REQUIRED)
+ find_package(PythonInterp 2 REQUIRED)
+
find_package(SWIG REQUIRED)
+ if (NOT PYTHON_VERSION_STRING VERSION_EQUAL PYTHONLIBS_VERSION_STRING)
+ message (FATAL_ERROR "Version mismatch between python interpreter and libraries")
+ endif (NOT PYTHON_VERSION_STRING VERSION_EQUAL PYTHONLIBS_VERSION_STRING)
+
+# execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "from sysconfig import get_path; print get_path('platlib')" OUTPUT_VARIABLE PYTHON_INSTALL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "import site; print site.PREFIXES[-1]" OUTPUT_VARIABLE PYTHON_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
+ file (TO_CMAKE_PATH "${PYTHON_PREFIX}" PYTHON_PREFIX)
+ execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "import site; print site.getsitepackages()[0]" OUTPUT_VARIABLE PYTHON_SITE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+ file (TO_CMAKE_PATH "${PYTHON_SITE_DIR}" PYTHON_SITE_DIR)
+
+ string (REGEX REPLACE "^${PYTHON_PREFIX}/" "${CMAKE_INSTALL_PREFIX}/" PYTHON_SITE_DIR "${PYTHON_SITE_DIR}")
+
+ set(PYTHON_INSTALL_DIR ${PYTHON_SITE_DIR} CACHE PATH "path to install python module")
+ message(${PYTHON_INSTALL_DIR})
set(HAVE_PYTHON TRUE)
include(FindPythonInterp)
endif (NOT DISABLE_PYTHON)
@@ -114,7 +132,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in ${CMAKE_CURRENT_BINA
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
file(COPY ${CMAKE_SOURCE_DIR}/xml DESTINATION ${CMAKE_BINARY_DIR})
- file(COPY ${CMAKE_SOURCE_DIR}/html_server DESTINATION ${CMAKE_BINARY_DIR})
+ file(COPY ${CMAKE_SOURCE_DIR}/pyserver DESTINATION ${CMAKE_BINARY_DIR})
file(COPY ${CMAKE_SOURCE_DIR}/pci
DESTINATION ${CMAKE_BINARY_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
diff --git a/driver/Makefile b/driver/Makefile
index c26a84a..a783c3f 100644
--- a/driver/Makefile
+++ b/driver/Makefile
@@ -1,3 +1,4 @@
+CONFIG_MODULE_SIG=n
obj-m := pciDriver.o
pciDriver-objs := base.o int.o umem.o kmem.o sysfs.o ioctl.o compat.o
@@ -8,6 +9,12 @@ PWD := $(shell pwd)
EXTRA_CFLAGS += -I$(M)/..
+ifdef DUMMY_DEVICE
+ifneq ($(DUMMY_DEVICE), 0)
+ EXTRA_CFLAGS += -DPCIDRIVER_DUMMY_DEVICE
+endif
+endif
+
default:
@KERNEL_GCC_VERSION=`cat /proc/version | head -n1 | cut -d " " -f 7` ;\
GCC_VERSION=`$(CC) --version | head -n 1 | tr ' ' '\n' | grep -e "[0-9]\+\.[0-9]" | tail -n 1` ;\
@@ -39,7 +46,7 @@ default:
build_date=`date "+%Y/%m/%d %H:%M:%S"` ;\
build="Built at $$build_date by $$build_user" ;\
revision="Revision $$build_revision from $$build_branch by $$build_author at $$build_path, last modification from $$build_lastmod" ;\
- echo -e "#define PCIDRIVER_BUILD \"$$build\"\\n#define PCIDRIVER_REVISION \"$$revision\"\\n#define PCIDRIVER_CHANGES \"$$build_changes\"\\n" > build.h ;\
+ /bin/echo -e "#define PCIDRIVER_BUILD \"$$build\"\\n#define PCIDRIVER_REVISION \"$$revision\"\\n#define PCIDRIVER_CHANGES \"$$build_changes\"\\n" > build.h ;\
$(MAKE) $(CFLAGS) -C $(KERNELDIR) M=$(PWD) CC=$$CC modules
install:
diff --git a/driver/README b/driver/README
new file mode 100644
index 0000000..66a68df
--- /dev/null
+++ b/driver/README
@@ -0,0 +1,4 @@
+make <OPTIONS>
+ V=1 verbose mode
+ RELAXED_GCC_CHECK=1 allow difference in micro version of gcc used to compile kernel and pcidriver module
+ DUMMY_DEVICE=1 build dummy device driver (does not require PCI device)
diff --git a/driver/base.c b/driver/base.c
index bc9ab98..4e55dda 100644
--- a/driver/base.c
+++ b/driver/base.c
@@ -210,6 +210,10 @@ MODULE_LICENSE("GPL v2");
/* Module class */
static struct class_compat *pcidriver_class;
+#ifdef PCIDRIVER_DUMMY_DEVICE
+pcidriver_privdata_t *pcidriver_privdata = NULL;
+#endif /* PCIDRIVER_DUMMY_DEVICE */
+
/**
*
* Called when loading the driver
@@ -217,7 +221,7 @@ static struct class_compat *pcidriver_class;
*/
static int __init pcidriver_init(void)
{
- int err;
+ int err = 0;
/* Initialize the device count */
atomic_set(&pcidriver_deviceCount, 0);
@@ -239,7 +243,11 @@ static int __init pcidriver_init(void)
/* Register PCI driver. This function returns the number of devices on some
* systems, therefore check for errors as < 0. */
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ if ((err = pcidriver_probe(NULL, NULL)) < 0) {
+#else /* PCIDRIVER_DUMMY_DEVICE */
if ((err = pci_register_driver(&pcidriver_driver)) < 0) {
+#endif /* PCIDRIVER_DUMMY_DEVICE */
mod_info("Couldn't register PCI driver. Module not loaded.\n");
goto init_pcireg_fail;
}
@@ -268,7 +276,12 @@ init_alloc_fail:
*/
static void pcidriver_exit(void)
{
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ pcidriver_remove(NULL);
+#else
pci_unregister_driver(&pcidriver_driver);
+#endif /* PCIDRIVER_DUMMY_DEVICE */
+
unregister_chrdev_region(pcidriver_devt, MAXDEVICES);
if (pcidriver_class != NULL)
@@ -286,12 +299,14 @@ static void pcidriver_exit(void)
* Will be registered at module init.
*
*/
+#ifndef PCIDRIVER_DUMMY_DEVICE
static struct pci_driver pcidriver_driver = {
.name = MODNAME,
.id_table = pcidriver_ids,
.probe = pcidriver_probe,
.remove = pcidriver_remove,
};
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
/**
*
@@ -301,7 +316,7 @@ static struct pci_driver pcidriver_driver = {
*/
static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
- int err;
+ int err = 0;
int devno;
pcidriver_privdata_t *privdata;
int devid;
@@ -311,6 +326,9 @@ static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_devi
*
* However, there is some difference in the interrupt handling functions.
*/
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ mod_info("Emulated device\n");
+#else /* PCIDRIVER_DUMMY_DEVICE */
if (id->vendor == PCIE_XILINX_VENDOR_ID) {
if (id->device == PCIE_ML605_DEVICE_ID) {
mod_info("Found ML605 board at %s\n", dev_name(&pdev->dev));
@@ -323,7 +341,7 @@ static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_devi
}
} else {
/* It is something else */
- mod_info( "Found unknown board (%x:%x) at %s\n", id->vendor, id->device, dev_name(&pdev->dev));
+ mod_info("Found unknown board (%x:%x) at %s\n", id->vendor, id->device, dev_name(&pdev->dev));
}
/* Enable the device */
@@ -343,7 +361,8 @@ static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_devi
/* Set Memory-Write-Invalidate support */
if ((err = pci_set_mwi(pdev)) != 0)
- mod_info("MWI not supported. Continue without enabling MWI.\n");
+ mod_info("MWI not supported. Continue without enabling MWI.\n");
+#endif /* PCIDRIVER_DUMMY_DEVICE */
/* Get / Increment the device id */
devid = atomic_inc_return(&pcidriver_deviceCount) - 1;
@@ -367,22 +386,31 @@ static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_devi
spin_lock_init(&(privdata->umemlist_lock));
atomic_set(&privdata->umem_count, 0);
- pci_set_drvdata( pdev, privdata );
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ pcidriver_privdata = privdata;
+#else /* PCIDRIVER_DUMMY_DEVICE */
+ pci_set_drvdata(pdev, privdata);
privdata->pdev = pdev;
+#endif /* PCIDRIVER_DUMMY_DEVICE */
/* Device add to sysfs */
devno = MKDEV(MAJOR(pcidriver_devt), MINOR(pcidriver_devt) + devid);
privdata->devno = devno;
- if (pcidriver_class != NULL) {
- /* FIXME: some error checking missing here */
- privdata->class_dev = class_device_create(pcidriver_class, NULL, devno, &(pdev->dev), NODENAMEFMT, MINOR(pcidriver_devt) + devid, privdata);
- class_set_devdata( privdata->class_dev, privdata );
- mod_info("Device /dev/%s%d added\n",NODENAME,MINOR(pcidriver_devt) + devid);
- }
+ /* FIXME: some error checking missing here */
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ privdata->class_dev = class_device_create(pcidriver_class, NULL, devno, NULL, NODENAMEFMT, MINOR(pcidriver_devt) + devid, privdata);
+#else /* PCIDRIVER_DUMMY_DEVICE */
+ privdata->class_dev = class_device_create(pcidriver_class, NULL, devno, &(pdev->dev), NODENAMEFMT, MINOR(pcidriver_devt) + devid, privdata);
+#endif /* PCIDRIVER_DUMMY_DEVICE */
+ class_set_devdata( privdata->class_dev, privdata );
+ mod_info("Device /dev/%s%d added\n",NODENAME,MINOR(pcidriver_devt) + devid);
+
+#ifndef PCIDRIVER_DUMMY_DEVICE
/* Setup mmaped BARs into kernel space */
if ((err = pcidriver_probe_irq(privdata)) != 0)
goto probe_irq_probe_fail;
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
/* Populate sysfs attributes for the class device */
/* TODO: correct errorhandling. ewww. must remove the files in reversed order :-( */
@@ -419,15 +447,19 @@ static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_devi
probe_device_create_fail:
probe_cdevadd_fail:
+#ifndef PCIDRIVER_DUMMY_DEVICE
probe_irq_probe_fail:
pcidriver_irq_unmap_bars(privdata);
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
kfree(privdata);
probe_nomem:
atomic_dec(&pcidriver_deviceCount);
probe_maxdevices_fail:
+#ifndef PCIDRIVER_DUMMY_DEVICE
probe_dma_fail:
pci_disable_device(pdev);
probe_pcien_fail:
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
return err;
}
@@ -440,8 +472,13 @@ static void __devexit pcidriver_remove(struct pci_dev *pdev)
{
pcidriver_privdata_t *privdata;
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ privdata = pcidriver_privdata;
+ pcidriver_privdata = NULL;
+#else /* PCIDRIVER_DUMMY_DEVICE */
/* Get private data from the device */
privdata = pci_get_drvdata(pdev);
+#endif /* PCIDRIVER_DUMMY_DEVICE */
/* Removing sysfs attributes from class device */
#define sysfs_attr(name) do { \
@@ -465,9 +502,11 @@ static void __devexit pcidriver_remove(struct pci_dev *pdev)
/* Free all allocated kmem buffers before leaving */
pcidriver_kmem_free_all( privdata );
-#ifdef ENABLE_IRQ
+#ifndef PCIDRIVER_DUMMY_DEVICE
+# ifdef ENABLE_IRQ
pcidriver_remove_irq(privdata);
-#endif
+# endif
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
/* Removing Character device */
cdev_del(&(privdata->cdev));
@@ -478,10 +517,14 @@ static void __devexit pcidriver_remove(struct pci_dev *pdev)
/* Releasing privdata */
kfree(privdata);
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ mod_info("Device at " NODENAMEFMT " removed\n", 0);
+#else /* PCIDRIVER_DUMMY_DEVICE */
/* Disabling PCI device */
pci_disable_device(pdev);
-
mod_info("Device at %s removed\n", dev_name(&pdev->dev));
+#endif /* PCIDRIVER_DUMMY_DEVICE */
+
}
/*************************************************************************/
@@ -613,6 +656,9 @@ int pcidriver_mmap(struct file *filp, struct vm_area_struct *vma)
/* Internal driver functions */
int pcidriver_mmap_pci(pcidriver_privdata_t *privdata, struct vm_area_struct *vmap, int bar)
{
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ return -ENXIO;
+#else /* PCIDRIVER_DUMMY_DEVICE */
int ret = 0;
unsigned long bar_addr;
unsigned long bar_length, vma_size;
@@ -620,6 +666,7 @@ int pcidriver_mmap_pci(pcidriver_privdata_t *privdata, struct vm_area_struct *vm
mod_info_dbg("Entering mmap_pci\n");
+
/* Get info of the BAR to be mapped */
bar_addr = pci_resource_start(privdata->pdev, bar);
bar_length = pci_resource_len(privdata->pdev, bar);
@@ -680,4 +727,5 @@ int pcidriver_mmap_pci(pcidriver_privdata_t *privdata, struct vm_area_struct *vm
}
return 0; /* success */
+#endif /* PCIDRIVER_DUMMY_DEVICE */
}
diff --git a/driver/base.h b/driver/base.h
index b976d3f..5b977fa 100644
--- a/driver/base.h
+++ b/driver/base.h
@@ -17,7 +17,9 @@ int pcidriver_open(struct inode *inode, struct file *filp );
int pcidriver_release(struct inode *inode, struct file *filp);
/* prototypes for device operations */
+#ifndef PCIDRIVER_DUMMY_DEVICE
static struct pci_driver pcidriver_driver;
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
static int __devinit pcidriver_probe(struct pci_dev *pdev, const struct pci_device_id *id);
static void __devexit pcidriver_remove(struct pci_dev *pdev);
diff --git a/driver/compat.h b/driver/compat.h
index fd3f188..5232a22 100644
--- a/driver/compat.h
+++ b/driver/compat.h
@@ -10,6 +10,12 @@
#ifndef _COMPAT_H
#define _COMPAT_H
+/*
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0)
+# error "Linux 3.0 and latter are supported"
+#endif
+*/
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
# define __devinit
# define __devexit
diff --git a/driver/ioctl.c b/driver/ioctl.c
index 26618c0..f957561 100644
--- a/driver/ioctl.c
+++ b/driver/ioctl.c
@@ -96,6 +96,9 @@ static int ioctl_mmap_area(pcidriver_privdata_t *privdata, unsigned long arg)
*/
static int ioctl_pci_config_read_write(pcidriver_privdata_t *privdata, unsigned int cmd, unsigned long arg)
{
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ return -ENXIO;
+#else /* PCIDRIVER_DUMMY_DEVICE */
int ret;
READ_FROM_USER(pci_cfg_cmd, pci_cmd);
@@ -133,6 +136,7 @@ static int ioctl_pci_config_read_write(pcidriver_privdata_t *privdata, unsigned
WRITE_TO_USER(pci_cfg_cmd, pci_cmd);
return 0;
+#endif /* PCIDRIVER_DUMMY_DEVICE */
}
/**
@@ -145,7 +149,14 @@ static int ioctl_pci_config_read_write(pcidriver_privdata_t *privdata, unsigned
static int ioctl_pci_info(pcidriver_privdata_t *privdata, unsigned long arg)
{
int ret;
+
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ READ_FROM_USER(pcilib_board_info_t, pci_info);
+ memset(&pci_info, 0, sizeof(pci_info));
+ WRITE_TO_USER(pcilib_board_info_t, pci_info);
+#else /* PCIDRIVER_DUMMY_DEVICE */
int bar;
+
READ_FROM_USER(pcilib_board_info_t, pci_info);
pci_info.vendor_id = privdata->pdev->vendor;
@@ -168,6 +179,7 @@ static int ioctl_pci_info(pcidriver_privdata_t *privdata, unsigned long arg)
}
WRITE_TO_USER(pcilib_board_info_t, pci_info);
+#endif /* PCIDRIVER_DUMMY_DEVICE */
return 0;
}
@@ -443,12 +455,16 @@ static int ioctl_device_state(pcidriver_privdata_t *privdata, unsigned long arg)
int ret;
pcilib_device_state_t info;
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ memset(&info, 0, sizeof(info));
+#else /* PCIDRIVER_DUMMY_DEVICE */
info = (pcilib_device_state_t) {
.iommu = iommu_present(privdata->pdev->dev.bus),
.mps = pcidriver_pcie_get_mps(privdata->pdev),
.readrq = pcie_get_readrq(privdata->pdev),
.dma_mask = privdata->pdev->dma_mask
};
+#endif /* PCIDRIVER_DUMMY_DEVICE */
WRITE_TO_USER(pcilib_device_state_t, info);
@@ -466,6 +482,7 @@ static int ioctl_device_state(pcidriver_privdata_t *privdata, unsigned long arg)
*/
static int ioctl_set_dma_mask(pcidriver_privdata_t *privdata, unsigned long arg)
{
+#ifndef PCIDRIVER_DUMMY_DEVICE
int err;
if ((arg < 24) || (arg > 64))
@@ -476,6 +493,7 @@ static int ioctl_set_dma_mask(pcidriver_privdata_t *privdata, unsigned long arg)
printk(KERN_ERR "pci_set_dma_mask(%lu) failed\n", arg);
return err;
}
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
return 0;
}
@@ -489,6 +507,7 @@ static int ioctl_set_dma_mask(pcidriver_privdata_t *privdata, unsigned long arg)
*/
static int ioctl_set_mps(pcidriver_privdata_t *privdata, unsigned long arg)
{
+#ifndef PCIDRIVER_DUMMY_DEVICE
int err;
if ((arg != 128) && (arg != 256) && (arg != 512))
@@ -499,6 +518,7 @@ static int ioctl_set_mps(pcidriver_privdata_t *privdata, unsigned long arg)
printk(KERN_ERR "pcie_set_mps(%lu) failed\n", arg);
return err;
}
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
return 0;
}
diff --git a/driver/kmem.c b/driver/kmem.c
index 618b5bf..805ace1 100644
--- a/driver/kmem.c
+++ b/driver/kmem.c
@@ -137,7 +137,11 @@ int pcidriver_kmem_alloc(pcidriver_privdata_t *privdata, kmem_handle_t *kmem_han
*/
switch (kmem_entry->type&PCILIB_KMEM_TYPE_MASK) {
case PCILIB_KMEM_TYPE_CONSISTENT:
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ retptr = kmalloc( kmem_handle->size, GFP_KERNEL);
+#else /* PCIDRIVER_DUMMY_DEVICE */
retptr = pci_alloc_consistent( privdata->pdev, kmem_handle->size, &(kmem_entry->dma_handle) );
+#endif /* PCIDRIVER_DUMMY_DEVICE */
break;
case PCILIB_KMEM_TYPE_REGION:
retptr = ioremap(kmem_handle->pa, kmem_handle->size);
@@ -162,6 +166,7 @@ int pcidriver_kmem_alloc(pcidriver_privdata_t *privdata, kmem_handle_t *kmem_han
kmem_entry->dma_handle = 0;
if (retptr) {
+#ifndef PCIDRIVER_DUMMY_DEVICE
if (kmem_entry->type == PCILIB_KMEM_TYPE_DMA_S2C_PAGE) {
kmem_entry->direction = PCI_DMA_TODEVICE;
kmem_entry->dma_handle = pci_map_single(privdata->pdev, retptr, kmem_handle->size, PCI_DMA_TODEVICE);
@@ -178,6 +183,7 @@ int pcidriver_kmem_alloc(pcidriver_privdata_t *privdata, kmem_handle_t *kmem_han
}
}
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
}
break;
@@ -361,6 +367,7 @@ int pcidriver_kmem_sync_entry( pcidriver_privdata_t *privdata, pcidriver_kmem_en
if (kmem_entry->direction == PCI_DMA_NONE)
return -EINVAL;
+#ifndef PCIDRIVER_DUMMY_DEVICE
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
switch (direction) {
case PCILIB_KMEM_SYNC_TODEVICE:
@@ -391,6 +398,7 @@ int pcidriver_kmem_sync_entry( pcidriver_privdata_t *privdata, pcidriver_kmem_en
return -EINVAL; /* wrong direction parameter */
}
#endif
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
return 0; /* success */
}
@@ -480,12 +488,17 @@ int pcidriver_kmem_free_entry(pcidriver_privdata_t *privdata, pcidriver_kmem_ent
/* Release DMA memory */
switch (kmem_entry->type&PCILIB_KMEM_TYPE_MASK) {
case PCILIB_KMEM_TYPE_CONSISTENT:
+#ifdef PCIDRIVER_DUMMY_DEVICE
+ kfree((void*)(kmem_entry->cpua));
+#else /* PCIDRIVER_DUMMY_DEVICE */
pci_free_consistent( privdata->pdev, kmem_entry->size, (void *)(kmem_entry->cpua), kmem_entry->dma_handle );
+#endif /* PCIDRIVER_DUMMY_DEVICE */
break;
case PCILIB_KMEM_TYPE_REGION:
iounmap((void *)(kmem_entry->cpua));
break;
case PCILIB_KMEM_TYPE_PAGE:
+#ifndef PCIDRIVER_DUMMY_DEVICE
if (kmem_entry->dma_handle) {
if (kmem_entry->type == PCILIB_KMEM_TYPE_DMA_S2C_PAGE) {
pci_unmap_single(privdata->pdev, kmem_entry->dma_handle, kmem_entry->size, PCI_DMA_TODEVICE);
@@ -493,6 +506,7 @@ int pcidriver_kmem_free_entry(pcidriver_privdata_t *privdata, pcidriver_kmem_ent
pci_unmap_single(privdata->pdev, kmem_entry->dma_handle, kmem_entry->size, PCI_DMA_FROMDEVICE);
}
}
+#endif /* ! PCIDRIVER_DUMMY_DEVICE */
free_pages((unsigned long)kmem_entry->cpua, get_order(kmem_entry->size));
break;
}
diff --git a/pywrap/api_server.py b/pyserver/api_server.py
index 18ee1f8..18ee1f8 100644
--- a/pywrap/api_server.py
+++ b/pyserver/api_server.py
diff --git a/html_server/html_server.py b/pyserver/html_server.py
index 22194cd..22194cd 100644
--- a/html_server/html_server.py
+++ b/pyserver/html_server.py
diff --git a/html_server/static/base.css b/pyserver/static/base.css
index 15c2249..15c2249 100644
--- a/html_server/static/base.css
+++ b/pyserver/static/base.css
diff --git a/html_server/static/check_err.js b/pyserver/static/check_err.js
index 66519ea..66519ea 100644
--- a/html_server/static/check_err.js
+++ b/pyserver/static/check_err.js
diff --git a/html_server/static/codebase/dhtmlx.css b/pyserver/static/codebase/dhtmlx.css
index 9b89ec5..9b89ec5 100644
--- a/html_server/static/codebase/dhtmlx.css
+++ b/pyserver/static/codebase/dhtmlx.css
diff --git a/html_server/static/codebase/dhtmlx.js b/pyserver/static/codebase/dhtmlx.js
index 5e560b1..5e560b1 100644
--- a/html_server/static/codebase/dhtmlx.js
+++ b/pyserver/static/codebase/dhtmlx.js
diff --git a/html_server/static/codebase/dhtmlx_deprecated.js b/pyserver/static/codebase/dhtmlx_deprecated.js
index 5731d3f..5731d3f 100644
--- a/html_server/static/codebase/dhtmlx_deprecated.js
+++ b/pyserver/static/codebase/dhtmlx_deprecated.js
diff --git a/html_server/static/codebase/ext/dhxupload.xap b/pyserver/static/codebase/ext/dhxupload.xap
index f2deecd..f2deecd 100644
--- a/html_server/static/codebase/ext/dhxupload.xap
+++ b/pyserver/static/codebase/ext/dhxupload.xap
Binary files differ
diff --git a/html_server/static/codebase/ext/swfobject.js b/pyserver/static/codebase/ext/swfobject.js
index 7a9d26f..7a9d26f 100644
--- a/html_server/static/codebase/ext/swfobject.js
+++ b/pyserver/static/codebase/ext/swfobject.js
diff --git a/html_server/static/codebase/ext/uploader.swf b/pyserver/static/codebase/ext/uploader.swf
index 2fa8674..2fa8674 100644
--- a/html_server/static/codebase/ext/uploader.swf
+++ b/pyserver/static/codebase/ext/uploader.swf
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/blank.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/blank.gif
index d7ae406..d7ae406 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/blank.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/blank.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/but_cut.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/but_cut.gif
index 942bd18..942bd18 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/but_cut.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/but_cut.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif
index e0a88ce..e0a88ce 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif
index 1680dbc..1680dbc 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif
index a61302a..a61302a 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif
index 42447b8..42447b8 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif
index 0350b2a..0350b2a 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif
index 9f3fe50..9f3fe50 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif
index f15d9f7..f15d9f7 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/leaf.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/leaf.gif
index 9c3e531..9c3e531 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/leaf.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/leaf.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line.gif
index b4f560c..b4f560c 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line1.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line1.gif
index b4f560c..b4f560c 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line1.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line1.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif
index bf32db2..bf32db2 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line2.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line2.gif
index 23b2ce3..23b2ce3 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line2.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line2.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif
index 6ec17b5..6ec17b5 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line3.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line3.gif
index 43152c5..43152c5 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line3.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line3.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif
index 74a874c..74a874c 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line4.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line4.gif
index 907fe7a..907fe7a 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line4.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line4.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif
index 5c7e162..5c7e162 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/lock.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/lock.gif
index 67456b1..67456b1 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/lock.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/lock.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus.gif
index caa3f57..caa3f57 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus1.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus1.gif
index 2ab1070..2ab1070 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus1.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus1.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus2.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus2.gif
index 036e5b3..036e5b3 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus2.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus2.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif
index b4672bf..b4672bf 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus3.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus3.gif
index 3242cca..3242cca 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus3.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus3.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif
index 8c279e0..8c279e0 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus4.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus4.gif
index 1c7c0a7..1c7c0a7 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus4.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus4.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif
index 70992fe..70992fe 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus5.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus5.gif
index 031c160..031c160 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus5.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus5.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif
index 47e25cd..47e25cd 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus.gif
index 019cfbd..019cfbd 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus1.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus1.gif
index 34dee94..34dee94 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus1.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus1.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus2.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus2.gif
index d57afa9..d57afa9 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus2.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus2.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif
index fde3a58..fde3a58 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus3.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus3.gif
index 2b6546b..2b6546b 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus3.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus3.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif
index 863d34c..863d34c 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus4.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus4.gif
index a4fe8c0..a4fe8c0 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus4.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus4.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif
index 635e6f6..635e6f6 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus5.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus5.gif
index 88c35a4..88c35a4 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus5.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus5.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif
index 2ae5444..2ae5444 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/radio_off.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/radio_off.gif
index a050afd..a050afd 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/radio_off.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/radio_off.gif
Binary files differ
diff --git a/html_server/static/codebase/imgs/dhxtree_skyblue/radio_on.gif b/pyserver/static/codebase/imgs/dhxtree_skyblue/radio_on.gif
index 4d594b5..4d594b5 100644
--- a/html_server/static/codebase/imgs/dhxtree_skyblue/radio_on.gif
+++ b/pyserver/static/codebase/imgs/dhxtree_skyblue/radio_on.gif
Binary files differ
diff --git a/html_server/static/codebase/thirdparty/excanvas/AUTHORS b/pyserver/static/codebase/thirdparty/excanvas/AUTHORS
index 90decb3..90decb3 100644
--- a/html_server/static/codebase/thirdparty/excanvas/AUTHORS
+++ b/pyserver/static/codebase/thirdparty/excanvas/AUTHORS
diff --git a/html_server/static/codebase/thirdparty/excanvas/COPYING b/pyserver/static/codebase/thirdparty/excanvas/COPYING
index 75b5248..75b5248 100644
--- a/html_server/static/codebase/thirdparty/excanvas/COPYING
+++ b/pyserver/static/codebase/thirdparty/excanvas/COPYING
diff --git a/html_server/static/codebase/thirdparty/excanvas/README b/pyserver/static/codebase/thirdparty/excanvas/README
index eb7c42f..eb7c42f 100644
--- a/html_server/static/codebase/thirdparty/excanvas/README
+++ b/pyserver/static/codebase/thirdparty/excanvas/README
diff --git a/html_server/static/codebase/thirdparty/excanvas/excanvas.js b/pyserver/static/codebase/thirdparty/excanvas/excanvas.js
index 66310a8..66310a8 100644
--- a/html_server/static/codebase/thirdparty/excanvas/excanvas.js
+++ b/pyserver/static/codebase/thirdparty/excanvas/excanvas.js
diff --git a/html_server/static/jquery-2.2.1.js b/pyserver/static/jquery-2.2.1.js
index b7c491f..b7c491f 100644
--- a/html_server/static/jquery-2.2.1.js
+++ b/pyserver/static/jquery-2.2.1.js
diff --git a/html_server/templates/base.html b/pyserver/templates/base.html
index a2df1e9..a2df1e9 100644
--- a/html_server/templates/base.html
+++ b/pyserver/templates/base.html
diff --git a/html_server/templates/property_info.html b/pyserver/templates/property_info.html
index 62ea1ba..62ea1ba 100644
--- a/html_server/templates/property_info.html
+++ b/pyserver/templates/property_info.html
diff --git a/html_server/templates/register_info.html b/pyserver/templates/register_info.html
index 3efebd7..3efebd7 100644
--- a/html_server/templates/register_info.html
+++ b/pyserver/templates/register_info.html
diff --git a/html_server/templates/registers/table_cell.html b/pyserver/templates/registers/table_cell.html
index d394d42..d394d42 100644
--- a/html_server/templates/registers/table_cell.html
+++ b/pyserver/templates/registers/table_cell.html
diff --git a/html_server/templates/registers/table_header.html b/pyserver/templates/registers/table_header.html
index 4c46713..4c46713 100644
--- a/html_server/templates/registers/table_header.html
+++ b/pyserver/templates/registers/table_header.html
diff --git a/html_server/templates/registers/table_scripts.html b/pyserver/templates/registers/table_scripts.html
index a772b9f..a772b9f 100644
--- a/html_server/templates/registers/table_scripts.html
+++ b/pyserver/templates/registers/table_scripts.html
diff --git a/html_server/templates/registers_list.html b/pyserver/templates/registers_list.html
index 26a6721..26a6721 100644
--- a/html_server/templates/registers_list.html
+++ b/pyserver/templates/registers_list.html
diff --git a/pywrap/CMakeLists.txt b/pywrap/CMakeLists.txt
index 4f38354..8f14e4f 100644
--- a/pywrap/CMakeLists.txt
+++ b/pywrap/CMakeLists.txt
@@ -17,14 +17,9 @@ set(CMAKE_SWIG_FLAGS "")
swig_add_module(pcipywrap python pcipywrap.i pcipywrap.c)
swig_link_libraries(pcipywrap ${PYTHON_LIBRARIES} pcilib)
-
-#install pcilib python wrapper into Python site packages folder
-execute_process ( COMMAND python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-install(TARGETS ${SWIG_MODULE_pcipywrap_REAL_NAME} DESTINATION ${PYTHON_SITE_PACKAGES})
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pcipywrap.py DESTINATION ${PYTHON_SITE_PACKAGES})
+install(TARGETS ${SWIG_MODULE_pcipywrap_REAL_NAME} DESTINATION ${PYTHON_INSTALL_DIR})
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pcipywrap.py DESTINATION ${PYTHON_INSTALL_DIR})
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/api_server.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test_pcipywrap.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)