--- a/tests/python/c_code@c_ext/cfile.xml Wed Mar 13 12:34:55 2013 +0900
+++ b/tests/python/c_code@c_ext/cfile.xml Wed Jul 31 10:45:07 2013 +0900
@@ -1,16 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<CFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="cext_xsd.xsd">
+<CFile>
<includes>
-<![CDATA[#include "stdio.h"]]>
+<![CDATA[
+]]>
</includes>
<variables>
- <variable name="TestInput" type="SINT" class="input"/>
- <variable name="TestOutput" type="SINT" class="output"/>
+ <variable name="TestInput" type="SINT" initial="0"/>
+ <variable name="TestOutput" type="SINT"/>
</variables>
<globals>
-<![CDATA[volatile long Lock=0;
+<![CDATA[
+volatile long Lock=0;
volatile char PtoC=1,CtoP=2;
+extern long AtomicCompareExchange(long*,long, long);
+
int Simple_C_Call(int val){
return val+1;
}
@@ -23,10 +27,10 @@
beremiz' runtime implementation */
int res = 0;
- if(!AtomicCompareExchange(&Lock, 0, 1)){
+ if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
PtoC=toC;
*fromC=CtoP;
- AtomicCompareExchange(&Lock, 1, 0);
+ AtomicCompareExchange((long*)&Lock, 1, 0);
res=1;
}
printf("C code called by Python: toC %d fromC %d\n",toC,*fromC);
@@ -36,29 +40,34 @@
int PLC_C_Call(char fromPLC, char *toPLC){
/* PLC also have to be realy carefull not to
conflict with asynchronous python access */
- int res;
- if(!AtomicCompareExchange(&Lock, 0, 1)){
+ if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
CtoP = fromPLC;
*toPLC = PtoC;
- AtomicCompareExchange(&Lock, 1, 0);
+ AtomicCompareExchange((long*)&Lock, 1, 0);
return 1;
}
return 0;
-}]]>
+}
+]]>
</globals>
<initFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
</initFunction>
<cleanUpFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
</cleanUpFunction>
<retrieveFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
</retrieveFunction>
<publishFunction>
-<![CDATA[if(!AtomicCompareExchange(&Lock, 0, 1)){
+<![CDATA[
+if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
TestInput = CtoP + PtoC + TestOutput;
- AtomicCompareExchange(&Lock, 1, 0);
-}]]>
+ AtomicCompareExchange((long*)&Lock, 1, 0);
+}
+]]>
</publishFunction>
</CFile>