Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-06-30 Thread Petar Jovanovic


From: Peter Maydell [peter.mayd...@linaro.org]
Sent: Thursday, June 27, 2013 7:21 PM
To: Petar Jovanovic
Cc: qemu-devel@nongnu.org; blauwir...@gmail.com; riku.voi...@linaro.org; Petar 
Jovanovic; aurel...@aurel32.net; r...@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

On 1 April 2013 16:49, Petar Jovanovic petar.jovano...@rt-rk.com wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.
 +#if defined(ARCH_HAS_SOCKET_TYPES)
 +static inline void target_to_host_sock_type(int *type)
  {

 [etc]

 I apologise for the hugely late review on this patch, but
 this looks odd. Whether we need to translate SOCK_* constants
 doesn't just depend on the target architecture, but also on
 the host. (Consider running QEMU on MIPS and emulating x86.)

 I think that we need to make sure that we define TARGET_SOCK_*
 for all architectures (ie with a bit in the common section
 that goes #ifndef ARCH_HAS_SOCKET_TYPES  [default stuff]),
 and then unconditionally define and call target_to_host_sock_type
 in syscall.c.
 
 thanks
 -- PMM

I have just resubmitted the patch with this addition included.
Check for [PATCH v3].

Thanks.

Petar



Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-06-27 Thread Peter Maydell
On 1 April 2013 16:49, Petar Jovanovic petar.jovano...@rt-rk.com wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.
 +#if defined(ARCH_HAS_SOCKET_TYPES)
 +static inline void target_to_host_sock_type(int *type)
  {

[etc]

I apologise for the hugely late review on this patch, but
this looks odd. Whether we need to translate SOCK_* constants
doesn't just depend on the target architecture, but also on
the host. (Consider running QEMU on MIPS and emulating x86.)

I think that we need to make sure that we define TARGET_SOCK_*
for all architectures (ie with a bit in the common section
that goes #ifndef ARCH_HAS_SOCKET_TYPES  [default stuff]),
and then unconditionally define and call target_to_host_sock_type
in syscall.c.

thanks
-- PMM



Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-05-30 Thread Riku Voipio
Hi,

On 27 May 2013 13:49, Petar Jovanovic petar.jovano...@imgtec.com wrote:
 Can anyone take a look at this and commit it if there are no other change 
 requests?

I thought Aurelian had an issue with this patch, but it seems you explained your
position well. I'll get this included in my next pull.

Riku

 
 From: Petar Jovanovic
 Sent: Wednesday, May 08, 2013 1:16 AM
 To: riku.voi...@linaro.org; qemu-devel@nongnu.org
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; r...@twiddle.net; 
 Alexander Graf; Andreas Färber
 Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 ping

 http://patchwork.ozlabs.org/patch/232770/
 
 From: Petar Jovanovic
 Sent: Tuesday, April 30, 2013 3:20 AM
 To: Andreas Färber
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
 riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander 
 Graf
 Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 My assumption was that if new socket values are added in future, they will
 likely be the same for all platforms, so they can be supported without
 adding new lines of code. Here we convert the values known to be different,
 we leave the values known to be the same, and for the incorrect values - we
 pass them to (host) kernel as they are in belief that kernel would return
 error. We could handle that part and check for incorrect value before
 passing it to the kernel, but in that case we bring more kernel logic to
 QEMU for the cases that are not likely to happen.

 Petar
 
 From: Andreas Färber [afaer...@suse.de]
 Sent: Monday, April 29, 2013 4:56 PM
 To: Petar Jovanovic
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
 riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander 
 Graf
 Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

 No objection but isn't that a frequent issue that mappings may need to
 be extended from time to time? The way I've seen that handled is on a
 case by case basis mapping from one known value to another, with
 defaulting to whatever form of error reporting appropriate. Here it
 seems that some cases were dropped and we are now defaulting to taking
 the literal value where no difference is known. This may lead to silent
 errors, whereas an abort as other extreme may prohibit use cases with no
 value difference between host and target.

 Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-05-30 Thread Petar Jovanovic
Thanks.

Petar

From: Riku Voipio [riku.voi...@linaro.org]
Sent: Thursday, May 30, 2013 3:28 PM
To: Petar Jovanovic
Cc: qemu-devel@nongnu.org; Aurelien Jarno; Petar Jovanovic; 
blauwir...@gmail.com; r...@twiddle.net; Alexander Graf; Andreas Färber
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

Hi,

On 27 May 2013 13:49, Petar Jovanovic petar.jovano...@imgtec.com wrote:
 Can anyone take a look at this and commit it if there are no other change 
 requests?

I thought Aurelian had an issue with this patch, but it seems you explained your
position well. I'll get this included in my next pull.

Riku

 
 From: Petar Jovanovic
 Sent: Wednesday, May 08, 2013 1:16 AM
 To: riku.voi...@linaro.org; qemu-devel@nongnu.org
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; r...@twiddle.net; 
 Alexander Graf; Andreas Färber
 Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 ping

 http://patchwork.ozlabs.org/patch/232770/
 
 From: Petar Jovanovic
 Sent: Tuesday, April 30, 2013 3:20 AM
 To: Andreas Färber
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
 riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander 
 Graf
 Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 My assumption was that if new socket values are added in future, they will
 likely be the same for all platforms, so they can be supported without
 adding new lines of code. Here we convert the values known to be different,
 we leave the values known to be the same, and for the incorrect values - we
 pass them to (host) kernel as they are in belief that kernel would return
 error. We could handle that part and check for incorrect value before
 passing it to the kernel, but in that case we bring more kernel logic to
 QEMU for the cases that are not likely to happen.

 Petar
 
 From: Andreas Färber [afaer...@suse.de]
 Sent: Monday, April 29, 2013 4:56 PM
 To: Petar Jovanovic
 Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
 riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander 
 Graf
 Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
 target_to_host_sock_type conversion

 Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

 No objection but isn't that a frequent issue that mappings may need to
 be extended from time to time? The way I've seen that handled is on a
 case by case basis mapping from one known value to another, with
 defaulting to whatever form of error reporting appropriate. Here it
 seems that some cases were dropped and we are now defaulting to taking
 the literal value where no difference is known. This may lead to silent
 errors, whereas an abort as other extreme may prohibit use cases with no
 value difference between host and target.

 Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-05-27 Thread Petar Jovanovic
Can anyone take a look at this and commit it if there are no other change 
requests?

Thank you.

From: Petar Jovanovic
Sent: Wednesday, May 08, 2013 1:16 AM
To: riku.voi...@linaro.org; qemu-devel@nongnu.org
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; r...@twiddle.net; 
Alexander Graf; Andreas Färber
Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

ping

http://patchwork.ozlabs.org/patch/232770/

From: Petar Jovanovic
Sent: Tuesday, April 30, 2013 3:20 AM
To: Andreas Färber
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

My assumption was that if new socket values are added in future, they will
likely be the same for all platforms, so they can be supported without
adding new lines of code. Here we convert the values known to be different,
we leave the values known to be the same, and for the incorrect values - we
pass them to (host) kernel as they are in belief that kernel would return
error. We could handle that part and check for incorrect value before
passing it to the kernel, but in that case we bring more kernel logic to
QEMU for the cases that are not likely to happen.

Petar

From: Andreas Färber [afaer...@suse.de]
Sent: Monday, April 29, 2013 4:56 PM
To: Petar Jovanovic
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

No objection but isn't that a frequent issue that mappings may need to
be extended from time to time? The way I've seen that handled is on a
case by case basis mapping from one known value to another, with
defaulting to whatever form of error reporting appropriate. Here it
seems that some cases were dropped and we are now defaulting to taking
the literal value where no difference is known. This may lead to silent
errors, whereas an abort as other extreme may prohibit use cases with no
value difference between host and target.

Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-05-22 Thread Petar Jovanovic
ping

From: Petar Jovanovic
Sent: Wednesday, May 08, 2013 1:16 AM
To: riku.voi...@linaro.org; qemu-devel@nongnu.org
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; r...@twiddle.net; 
Alexander Graf; Andreas Färber
Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

ping

http://patchwork.ozlabs.org/patch/232770/

From: Petar Jovanovic
Sent: Tuesday, April 30, 2013 3:20 AM
To: Andreas Färber
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

My assumption was that if new socket values are added in future, they will
likely be the same for all platforms, so they can be supported without
adding new lines of code. Here we convert the values known to be different,
we leave the values known to be the same, and for the incorrect values - we
pass them to (host) kernel as they are in belief that kernel would return
error. We could handle that part and check for incorrect value before
passing it to the kernel, but in that case we bring more kernel logic to
QEMU for the cases that are not likely to happen.

Petar

From: Andreas Färber [afaer...@suse.de]
Sent: Monday, April 29, 2013 4:56 PM
To: Petar Jovanovic
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

No objection but isn't that a frequent issue that mappings may need to
be extended from time to time? The way I've seen that handled is on a
case by case basis mapping from one known value to another, with
defaulting to whatever form of error reporting appropriate. Here it
seems that some cases were dropped and we are now defaulting to taking
the literal value where no difference is known. This may lead to silent
errors, whereas an abort as other extreme may prohibit use cases with no
value difference between host and target.

Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-05-07 Thread Petar Jovanovic
ping

http://patchwork.ozlabs.org/patch/232770/

From: Petar Jovanovic
Sent: Tuesday, April 30, 2013 3:20 AM
To: Andreas Färber
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: RE: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

My assumption was that if new socket values are added in future, they will
likely be the same for all platforms, so they can be supported without
adding new lines of code. Here we convert the values known to be different,
we leave the values known to be the same, and for the incorrect values - we
pass them to (host) kernel as they are in belief that kernel would return
error. We could handle that part and check for incorrect value before
passing it to the kernel, but in that case we bring more kernel logic to
QEMU for the cases that are not likely to happen.

Petar

From: Andreas Färber [afaer...@suse.de]
Sent: Monday, April 29, 2013 4:56 PM
To: Petar Jovanovic
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

No objection but isn't that a frequent issue that mappings may need to
be extended from time to time? The way I've seen that handled is on a
case by case basis mapping from one known value to another, with
defaulting to whatever form of error reporting appropriate. Here it
seems that some cases were dropped and we are now defaulting to taking
the literal value where no difference is known. This may lead to silent
errors, whereas an abort as other extreme may prohibit use cases with no
value difference between host and target.

Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for 
 SO_STYLE

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-29 Thread Petar Jovanovic
ping

http://patchwork.ozlabs.org/patch/232770/

From: Petar Jovanovic
Sent: Tuesday, April 23, 2013 2:15 AM
To: Aurelien Jarno; Petar Jovanovic
Cc: qemu-devel@nongnu.org; riku.voi...@linaro.org; r...@twiddle.net; 
blauwir...@gmail.com
Subject: RE: [PATCH v2] linux-user: improve target_to_host_sock_type conversion

Thanks Aurelien for your comments.

What others think? Can we submit this version of the patch? Riku? Richard, Blue?

Petar

From: Aurelien Jarno [aurel...@aurel32.net]
Sent: Monday, April 15, 2013 3:47 PM
To: Petar Jovanovic
Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
r...@twiddle.net; blauwir...@gmail.com
Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type conversion

On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. 
  */
 - #define TARGET_SO_STYLESO_TYPE /* Synonym */
 - #define TARGET_SO_ERROR0x1007  /* get error status and clear */
 - #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 - #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 - #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
 - #define TARGET_SO_RCVLOWAT 0x1004  /* receive low-water mark */
 - #define TARGET_SO_SNDTIMEO 0x1005  /* send timeout */
 - #define TARGET_SO_RCVTIMEO 0x1006  /* receive timeout */
 - #define TARGET_SO_ACCEPTCONN   0x1009
 -
 - /* linux-specific, might as well be the same as on i386 */
 - #define TARGET_SO_NO_CHECK 11
 - #define TARGET_SO_PRIORITY 12
 - #define TARGET_SO_BSDCOMPAT14
 +/* MIPS special values for constants */
 +
 +/*
 + * For setsockopt(2)
 + *
 + * This defines are ABI conformant as far as Linux supports these ...
 + */
 +#define TARGET_SOL_SOCKET  0x
 +
 +#define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
 */
 +#define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses. */
 +#define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and send
 +  SIGPIPE when they die. */
 +#define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing. */
 +#define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 +  broadcast messages. */
 +#define TARGET_SO_LINGER 

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-29 Thread Andreas Färber
Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.
 
 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

No objection but isn't that a frequent issue that mappings may need to
be extended from time to time? The way I've seen that handled is on a
case by case basis mapping from one known value to another, with
defaulting to whatever form of error reporting appropriate. Here it
seems that some cases were dropped and we are now defaulting to taking
the literal value where no difference is known. This may lead to silent
errors, whereas an abort as other extreme may prohibit use cases with no
value difference between host and target.

Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion
 
 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for 
 SO_STYLE.  */
 - #define TARGET_SO_STYLESO_TYPE /* Synonym */
 - #define TARGET_SO_ERROR0x1007  /* get error status and clear */
 - #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 - #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 - #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
 - #define TARGET_SO_RCVLOWAT 0x1004  /* receive low-water mark */
 - #define TARGET_SO_SNDTIMEO 0x1005  /* send timeout */
 - #define TARGET_SO_RCVTIMEO 0x1006  /* receive timeout */
 - #define TARGET_SO_ACCEPTCONN   0x1009
 -
 - /* linux-specific, might as well be the same as on i386 */
 - #define TARGET_SO_NO_CHECK 11
 - #define TARGET_SO_PRIORITY 12
 - #define TARGET_SO_BSDCOMPAT14
 +/* MIPS special values for constants */
 +
 +/*
 + * For setsockopt(2)
 + *
 + * This defines are ABI conformant as far as Linux supports these ...
 + */
 +#define TARGET_SOL_SOCKET  0x
 +
 +#define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
 */
 +#define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses. */
 +#define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 +  SIGPIPE when they die. */
 +  

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-29 Thread Petar Jovanovic
My assumption was that if new socket values are added in future, they will 
likely be the same for all platforms, so they can be supported without adding 
new lines of code. Here we convert the values known to be different, we leave 
the values known to be the same, and for the incorrect values - we pass them to 
(host) kernel as they are in belief that kernel would return error. We could 
handle that part and check for incorrect value before passing it to the kernel, 
but in that case we bring more kernel logic to QEMU for the cases that are not 
likely to happen.

Petar

From: Andreas Färber [afaer...@suse.de]
Sent: Monday, April 29, 2013 4:56 PM
To: Petar Jovanovic
Cc: Aurelien Jarno; Petar Jovanovic; blauwir...@gmail.com; 
riku.voi...@linaro.org; qemu-devel@nongnu.org; r...@twiddle.net; Alexander Graf
Subject: Re: [Qemu-devel] [PATCH v2] linux-user: improve 
target_to_host_sock_type conversion

Am 23.04.2013 02:15, schrieb Petar Jovanovic:
 Thanks Aurelien for your comments.

 What others think? Can we submit this version of the patch? Riku? Richard, 
 Blue?

No objection but isn't that a frequent issue that mappings may need to
be extended from time to time? The way I've seen that handled is on a
case by case basis mapping from one known value to another, with
defaulting to whatever form of error reporting appropriate. Here it
seems that some cases were dropped and we are now defaulting to taking
the literal value where no difference is known. This may lead to silent
errors, whereas an abort as other extreme may prohibit use cases with no
value difference between host and target.

Andreas

 
 From: Aurelien Jarno [aurel...@aurel32.net]
 Sent: Monday, April 15, 2013 3:47 PM
 To: Petar Jovanovic
 Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
 r...@twiddle.net; blauwir...@gmail.com
 Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type 
 conversion

 On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging 
 information.  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for 
 SO_STYLE.  */
 - #define TARGET_SO_STYLESO_TYPE /* Synonym */
 - #define TARGET_SO_ERROR0x1007  /* get error status and clear */
 - #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 - #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 - #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
 - #define TARGET_SO_RCVLOWAT 0x1004

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-22 Thread Petar Jovanovic
Thanks Aurelien for your comments.

What others think? Can we submit this version of the patch? Riku? Richard, Blue?

Petar

From: Aurelien Jarno [aurel...@aurel32.net]
Sent: Monday, April 15, 2013 3:47 PM
To: Petar Jovanovic
Cc: qemu-devel@nongnu.org; Petar Jovanovic; riku.voi...@linaro.org; 
r...@twiddle.net; blauwir...@gmail.com
Subject: Re: [PATCH v2] linux-user: improve target_to_host_sock_type conversion

On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com

 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.

 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.

 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:

  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h

  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)

 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@

  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. 
  */
 - #define TARGET_SO_STYLESO_TYPE /* Synonym */
 - #define TARGET_SO_ERROR0x1007  /* get error status and clear */
 - #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 - #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 - #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
 - #define TARGET_SO_RCVLOWAT 0x1004  /* receive low-water mark */
 - #define TARGET_SO_SNDTIMEO 0x1005  /* send timeout */
 - #define TARGET_SO_RCVTIMEO 0x1006  /* receive timeout */
 - #define TARGET_SO_ACCEPTCONN   0x1009
 -
 - /* linux-specific, might as well be the same as on i386 */
 - #define TARGET_SO_NO_CHECK 11
 - #define TARGET_SO_PRIORITY 12
 - #define TARGET_SO_BSDCOMPAT14
 +/* MIPS special values for constants */
 +
 +/*
 + * For setsockopt(2)
 + *
 + * This defines are ABI conformant as far as Linux supports these ...
 + */
 +#define TARGET_SOL_SOCKET  0x
 +
 +#define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
 */
 +#define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses. */
 +#define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and send
 +  SIGPIPE when they die. */
 +#define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing. */
 +#define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 +  broadcast messages. */
 +#define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 +* socket to transmit pending 
 data.
 +*/
 +#define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.
 +*/
 +#if 0
 +/* To add: Allow local 

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-15 Thread Aurelien Jarno
On Mon, Apr 01, 2013 at 05:49:39PM +0200, Petar Jovanovic wrote:
 From: Petar Jovanovic petar.jovano...@imgtec.com
 
 Previous implementation has failed to take into account different value of
 SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
 The same conversion has to be applied both for do_socket and do_socketpair,
 so the code has been isolated in a static inline function.
 The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
 these are MIPS, SPARC and ALPHA now.
 
 enum sock_type in linux-user/socket.h has been extended to include
 TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
 The patch also includes necessary code style changes (tab to spaces) in the
 header file in the MIPS #ifdef block touched by the change.
 
 Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
 ---
  v2:
 
  - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
  - values for sock_type are defined for SPARC and ALPHA in socket.h
 
  linux-user/socket.h  |  248 
 +-
  linux-user/syscall.c |   45 +
  2 files changed, 195 insertions(+), 98 deletions(-)
 
 diff --git a/linux-user/socket.h b/linux-user/socket.h
 index 339cae5..d2b05dc 100644
 --- a/linux-user/socket.h
 +++ b/linux-user/socket.h
 @@ -1,91 +1,104 @@
  
  #if defined(TARGET_MIPS)
 - // MIPS special values for constants
 -
 - /*
 -  * For setsockopt(2)
 -  *
 -  * This defines are ABI conformant as far as Linux supports these ...
 -  */
 - #define TARGET_SOL_SOCKET  0x
 -
 - #define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
  */
 - #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses.  */
 - #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
 send
 -   SIGPIPE when they die.  */
 - #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
 - #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 -   broadcast messages.  */
 - #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 -   socket to transmit pending data.  */
 - #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.  */
 - #if 0
 - To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
 and port reuse.  */
 - #endif
 -
 - #define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. 
  */
 - #define TARGET_SO_STYLESO_TYPE /* Synonym */
 - #define TARGET_SO_ERROR0x1007  /* get error status and clear */
 - #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 - #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 - #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
 - #define TARGET_SO_RCVLOWAT 0x1004  /* receive low-water mark */
 - #define TARGET_SO_SNDTIMEO 0x1005  /* send timeout */
 - #define TARGET_SO_RCVTIMEO 0x1006  /* receive timeout */
 - #define TARGET_SO_ACCEPTCONN   0x1009
 -
 - /* linux-specific, might as well be the same as on i386 */
 - #define TARGET_SO_NO_CHECK 11
 - #define TARGET_SO_PRIORITY 12
 - #define TARGET_SO_BSDCOMPAT14
 +/* MIPS special values for constants */
 +
 +/*
 + * For setsockopt(2)
 + *
 + * This defines are ABI conformant as far as Linux supports these ...
 + */
 +#define TARGET_SOL_SOCKET  0x
 +
 +#define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
 */
 +#define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
 addresses. */
 +#define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and send
 +  SIGPIPE when they die. */
 +#define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing. */
 +#define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
 +  broadcast messages. */
 +#define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
 +* socket to transmit pending 
 data.
 +*/
 +#define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
 in-band.
 +*/
 +#if 0
 +/* To add: Allow local address and port reuse. */
 +#define TARGET_SO_REUSEPORT 0x0200
 +#endif
 +
 +#define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. 
 */
 +#define TARGET_SO_STYLESO_TYPE /* Synonym */
 +#define TARGET_SO_ERROR0x1007  /* get error status and clear */
 +#define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
 +#define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
 +

Re: [Qemu-devel] [PATCH v2] linux-user: improve target_to_host_sock_type conversion

2013-04-10 Thread Petar Jovanovic
ping

http://patchwork.ozlabs.org/patch/232770/

From: Petar Jovanovic [petar.jovano...@rt-rk.com]
Sent: Monday, April 01, 2013 5:49 PM
To: qemu-devel@nongnu.org
Cc: Petar Jovanovic; riku.voi...@linaro.org; aurel...@aurel32.net; 
r...@twiddle.net; blauwir...@gmail.com
Subject: [PATCH v2] linux-user: improve target_to_host_sock_type conversion

From: Petar Jovanovic petar.jovano...@imgtec.com

Previous implementation has failed to take into account different value of
SOCK_NONBLOCK on target and host, and existence of SOCK_CLOEXEC.
The same conversion has to be applied both for do_socket and do_socketpair,
so the code has been isolated in a static inline function.
The change is valid for architectures that define ARCH_HAS_SOCKET_TYPES,
these are MIPS, SPARC and ALPHA now.

enum sock_type in linux-user/socket.h has been extended to include
TARGET_SOCK_CLOEXEC and TARGET_SOCK_NONBLOCK, similar to definition in libc.
The patch also includes necessary code style changes (tab to spaces) in the
header file in the MIPS #ifdef block touched by the change.

Signed-off-by: Petar Jovanovic petar.jovano...@imgtec.com
---
 v2:

 - the patch defines ARCH_HAS_SOCKET_TYPES for MIPS, SPARC and ALPHA
 - values for sock_type are defined for SPARC and ALPHA in socket.h

 linux-user/socket.h  |  248 +-
 linux-user/syscall.c |   45 +
 2 files changed, 195 insertions(+), 98 deletions(-)

diff --git a/linux-user/socket.h b/linux-user/socket.h
index 339cae5..d2b05dc 100644
--- a/linux-user/socket.h
+++ b/linux-user/socket.h
@@ -1,91 +1,104 @@

 #if defined(TARGET_MIPS)
-   // MIPS special values for constants
-
-   /*
-* For setsockopt(2)
-*
-* This defines are ABI conformant as far as Linux supports these ...
-*/
-   #define TARGET_SOL_SOCKET  0x
-
-   #define TARGET_SO_DEBUG0x0001  /* Record debugging information. 
 */
-   #define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local 
addresses.  */
-   #define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and 
send
- SIGPIPE when they die.  */
-   #define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing.  */
-   #define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
- broadcast messages.  */
-   #define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
- socket to transmit pending data.  */
-   #define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data 
in-band.  */
-   #if 0
-   To add: #define TARGET_SO_REUSEPORT 0x0200 /* Allow local address 
and port reuse.  */
-   #endif
-
-   #define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. 
 */
-   #define TARGET_SO_STYLESO_TYPE /* Synonym */
-   #define TARGET_SO_ERROR0x1007  /* get error status and clear */
-   #define TARGET_SO_SNDBUF   0x1001  /* Send buffer size. */
-   #define TARGET_SO_RCVBUF   0x1002  /* Receive buffer. */
-   #define TARGET_SO_SNDLOWAT 0x1003  /* send low-water mark */
-   #define TARGET_SO_RCVLOWAT 0x1004  /* receive low-water mark */
-   #define TARGET_SO_SNDTIMEO 0x1005  /* send timeout */
-   #define TARGET_SO_RCVTIMEO 0x1006  /* receive timeout */
-   #define TARGET_SO_ACCEPTCONN   0x1009
-
-   /* linux-specific, might as well be the same as on i386 */
-   #define TARGET_SO_NO_CHECK 11
-   #define TARGET_SO_PRIORITY 12
-   #define TARGET_SO_BSDCOMPAT14
+/* MIPS special values for constants */
+
+/*
+ * For setsockopt(2)
+ *
+ * This defines are ABI conformant as far as Linux supports these ...
+ */
+#define TARGET_SOL_SOCKET  0x
+
+#define TARGET_SO_DEBUG0x0001  /* Record debugging information. */
+#define TARGET_SO_REUSEADDR0x0004  /* Allow reuse of local addresses. 
*/
+#define TARGET_SO_KEEPALIVE0x0008  /* Keep connections alive and send
+  SIGPIPE when they die. */
+#define TARGET_SO_DONTROUTE0x0010  /* Don't do local routing. */
+#define TARGET_SO_BROADCAST0x0020  /* Allow transmission of
+  broadcast messages. */
+#define TARGET_SO_LINGER   0x0080  /* Block on close of a reliable
+* socket to transmit pending data.
+*/
+#define TARGET_SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band.
+*/
+#if 0
+/* To add: Allow local address and port reuse. */
+#define TARGET_SO_REUSEPORT 0x0200
+#endif
+
+#define TARGET_SO_TYPE 0x1008  /* Compatible name for SO_STYLE. */
+