[Vm-dev] VM Maker: VMMaker.oscog-ul.2354.mcz

Eliot Miranda eliot.miranda at gmail.com
Fri Mar 16 22:46:04 UTC 2018


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:
> outFlowControlType: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>>primitiveSerialPortReadByName: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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180316/424dd2e7/attachment.html>


More information about the Vm-dev mailing list