[Vm-dev] VM Maker: VMMaker.oscog-ul.2354.mcz
Eliot Miranda
eliot.miranda at gmail.com
Fri Mar 16 23:08:39 UTC 2018
Hi Levente,
no need for any action on your part. I see that the Serial Port
primitives are essentially unimplemented on Mac OS so it is trivial to
provide null implementations for the "ByName" ones.
On Fri, Mar 16, 2018 at 3:46 PM, Eliot Miranda <eliot.miranda at gmail.com>
wrote:
> Hi Levente,
>
> when I try and build on Mac OS X I get this:
>
> "_serialPortOpenByName", referenced from:
> _primitiveSerialPortOpenByName in SerialPlugin.lib(SerialPlugin.o)
> "_serialPortReadIntoByName", referenced from:
> _primitiveSerialPortReadByName in SerialPlugin.lib(SerialPlugin.o)
> "_serialPortWriteFromByName", referenced from:
> _primitiveSerialPortWriteByName in SerialPlugin.lib(SerialPlugin.o)
>
> The implementations are missing in both platforms/Mac
> OS/plugins/SerialPlugin/sqMacSerialPort.c and platforms/iOS/plugins/
> SerialPlugin/sqMacSerialPort.c. They are there in platforms/unix/plugins/SerialPlugin/sqUnixSerial.c
> and platforms/win32/plugins/SerialPlugin/sqWin32SerialPort.c.
>
> :-(
>
>
> On Sat, Mar 10, 2018 at 1:58 PM, <commits at source.squeak.org> wrote:
>
>>
>> Levente Uzonyi uploaded a new version of VMMaker to project VM Maker:
>> http://source.squeak.org/VMMaker/VMMaker.oscog-ul.2354.mcz
>>
>> ==================== Summary ====================
>>
>> Name: VMMaker.oscog-ul.2354
>> Author: ul
>> Time: 10 March 2018, 10:56:45.349653 pm
>> UUID: b8f3192d-2b33-4a5d-83f9-785fbefbc570
>> Ancestors: VMMaker.oscog-eem.2353
>>
>> Restored SerialPlugin's *byName* primitives on non-PharoVM VMs.
>>
>> =============== Diff against VMMaker.oscog-eem.2353 ===============
>>
>> Item was changed:
>> ----- Method: SerialPlugin>>primitiveSerialPortOpenByName:baudRate:
>> stopBitsType:parityType:dataBits:inFlowControlType:out
>> FlowControlType:xOnByte:xOffByte: (in category 'primitives') -----
>> primitiveSerialPortOpenByName: portName baudRate: baudRate
>> stopBitsType: stopBitsType parityType: parityType dataBits: dataBits
>> inFlowControlType: inFlowControl outFlowControlType: outFlowControl
>> xOnByte: xOnChar xOffByte: xOffChar
>> - <option: #PharoVM>
>> <var: #port type: 'char *'>
>>
>> | port portNameSize |
>>
>> self primitive: 'primitiveSerialPortOpenByName'
>> parameters: #(String SmallInteger SmallInteger
>> SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger
>> SmallInteger ).
>>
>> portNameSize := interpreterProxy slotSizeOf: (portName asOop:
>> String).
>> port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
>> self cCode: 'memcpy(port, portName, portNameSize)'.
>>
>> self cCode: 'serialPortOpenByName(
>> port, baudRate, stopBitsType, parityType,
>> dataBits,
>> inFlowControl, outFlowControl, xOnChar,
>> xOffChar)'.
>>
>> self free: port.!
>>
>> Item was changed:
>> ----- Method: SerialPlugin>>primitiveSerialP
>> ortReadByName:into:startingAt:count: (in category 'primitives') -----
>> primitiveSerialPortReadByName: portName into: array startingAt:
>> startIndex count: count
>> - <option: #PharoVM>
>> <var: #port type: 'char *'>
>>
>> | port portNameSize bytesRead arrayPtr |
>>
>> self primitive: 'primitiveSerialPortReadByName'
>> parameters: #(String ByteArray SmallInteger SmallInteger
>> ).
>>
>> interpreterProxy success: (startIndex >= 1 and: [startIndex +
>> count - 1 <= (interpreterProxy byteSizeOf: array cPtrAsOop)]).
>> "adjust for zero-origin indexing"
>>
>> portNameSize := interpreterProxy slotSizeOf: (portName asOop:
>> String).
>> port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
>> self cCode: 'memcpy(port, portName, portNameSize)'.
>>
>> arrayPtr := array + startIndex - 1.
>> bytesRead := self cCode: 'serialPortReadIntoByName( port, count,
>> arrayPtr)'.
>>
>> self free: port.
>>
>> ^ bytesRead asSmallIntegerObj!
>>
>> Item was changed:
>> ----- Method: SerialPlugin>>primitiveSerialPortWriteByName:from:startingAt:count:
>> (in category 'primitives') -----
>> primitiveSerialPortWriteByName: portName from: array startingAt:
>> startIndex count: count
>> - <option: #PharoVM>
>> <var: #port type: 'char *'>
>>
>> | bytesWritten arrayPtr portNameSize port |
>>
>> self primitive: 'primitiveSerialPortWriteByName'
>> parameters: #(String ByteArray SmallInteger SmallInteger
>> ).
>>
>> portNameSize := interpreterProxy slotSizeOf: (portName asOop:
>> String).
>> port := self cCode: 'calloc(portNameSize+1, sizeof(char))'.
>> self cCode: 'memcpy(port, portName, portNameSize)'.
>>
>> interpreterProxy success: (startIndex >= 1 and: [startIndex +
>> count - 1 <= (interpreterProxy byteSizeOf: array cPtrAsOop)]).
>> interpreterProxy failed
>> ifFalse: [arrayPtr := array + startIndex - 1.
>> bytesWritten := self cCode:
>> 'serialPortWriteFromByName(port, count, arrayPtr)' ].
>>
>> self free: port.
>>
>> ^ bytesWritten asSmallIntegerObj!
>>
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180316/4bfd89e9/attachment-0001.html>
More information about the Vm-dev
mailing list