Re: [PATCH] virtio_console: Add support for multiple ports for generic guest and host communication



[Adding Greg to the CC list]

On (Fri) Sep 11 2009 [17:00:10], Alan Cox wrote:
The interface presented to guest userspace is of a simple char
device, so it can be used like this:

fd = open("/dev/vcon2", O_RDWR);
ret = read(fd, buf, 100);
ret = write(fd, string, strlen(string));

Each port is to be assigned a unique function, for example, the
first 4 ports may be reserved for libvirt usage, the next 4 for
generic streaming data and so on. This port-function mapping
isn't finalised yet.

Unless I am missing something this looks completely bonkers

Every time we have a table of numbers for functionality it ends in
tears. We have to keep tables up to date and managed, we have to
administer the magical number to name space.

Anyway - you don't seem to need a fixed number you can use dynamic
allocation and udev.

There are at least two better ways to do this

- Using sysfs nodes so you have a proper heirarchy of names/functions
- Using a simple file system which provides a heirarchy of nodes whose
enumeration and access is backed by calls to whatever happyvisor you
are using.

it then self enumerates, self populates, doesn't need anyone to keep
updating magic tables of guest code and expands cleanly - yes ?

Hey Greg,

Can you tell me how this could work out -- each console port could have
a "role" string associated with it (obtainable from the invoking qemu
process in case of qemu/kvm). Something that I have in mind currently
is:

$ qemu-kvm ... -virtioconsole role=org/qemu/clipboard

and then the guest kernel sees the string, and puts the
"org/qemu/clipboard" in some file in sysfs. Guest userspace should then
be able to open and read/write to

/dev/virtio_console/org/qemu/clipboard

I guess that's an acceptable scheme to all.

I also don't know how this would work -- which sysfs attributes to
export and how would udev pick that up and create the device at the
specified location.

Any pointers appreciated.

Thanks,
Amit
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: [PATCH] virtio_console: Add support for multiple ports for generic guest and host communication
    ... ret = write(fd, string, strlen(string)); ... Each port is to be assigned a unique function, for example, the ...
    (Linux-Kernel)
  • Re: .Net Directory Classes give COM errors
    ... Public Property DirEntryAs DirectoryEntry ... Private _DirSearch As DirectorySearcher ... Public Function MailAdressFromLDAP(ByVal sAMAccountName As String) As String ... Dim ret As String = String.Empty 'declare ret var ...
    (microsoft.public.dotnet.general)
  • YUI--Competent?
    ... @param attr The attribute to get. ... ret = el.getAttribute; ... they change it to an empty string per some imagined "DOM spec". ... unit testing and ostensibly have the best JS developers working around ...
    (comp.lang.javascript)
  • Re: Migrating from VB6 and Printer object
    ... You can use the GetPrinter API call to get all the information (such as Port name) - e.g. ... ByRef phPrinter As Int32, _ ... Public pServerName As String ... Dim dmOut As New DEVMODE ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Serial port error statistics - any comparable data?
    ... Alas - the port in question is the native legacy motherboard port. ... The "cluster" in all the cases observed is the loss of exactly one character, ... "The quick brown fox jumps over the lazy dog 0123456789" ... the string from a port unblocked with fcntl - and the throw away python ...
    (comp.lang.python)