Re: [lng-odp] [API-NEXT PATCH 1/2] linux-gen: _ishm: exporting/importing user len and flags

2016-12-27 Thread Maxim Uvarov
Thanks,

that is what we discussed. I think that can go to 'next' also, right?

Maxim.

On 12/21/16 14:11, Christophe Milard wrote:
> The size of the shared memory and its user flag set, as given at reserve
> time, are exported and imported so that odp_shm_info() return proper
> values on imported blocks
> 
> Signed-off-by: Christophe Milard 
> ---
>  platform/linux-generic/_ishm.c | 38 
> +-
>  .../validation/api/shmem/shmem_linux.c | 14 ++--
>  2 files changed, 42 insertions(+), 10 deletions(-)
> 
> diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c
> index 449e357..8b32709 100644
> --- a/platform/linux-generic/_ishm.c
> +++ b/platform/linux-generic/_ishm.c
> @@ -124,7 +124,9 @@
>  #define EXPORT_FILE_LINE3_FMT "file: %s"
>  #define EXPORT_FILE_LINE4_FMT "length: %" PRIu64
>  #define EXPORT_FILE_LINE5_FMT "flags: %" PRIu32
> -#define EXPORT_FILE_LINE6_FMT "align: %" PRIu32
> +#define EXPORT_FILE_LINE6_FMT "user_length: %" PRIu64
> +#define EXPORT_FILE_LINE7_FMT "user_flags: %" PRIu32
> +#define EXPORT_FILE_LINE8_FMT "align: %" PRIu32
>  /*
>   * A fragment describes a piece of the shared virtual address space,
>   * and is allocated only when allocation is done with the _ODP_ISHM_SINGLE_VA
> @@ -477,7 +479,11 @@ static int create_file(int block_index, huge_flag_t 
> huge, uint64_t len,
>   new_block->filename);
>   fprintf(export_file, EXPORT_FILE_LINE4_FMT "\n", len);
>   fprintf(export_file, EXPORT_FILE_LINE5_FMT "\n", flags);
> - fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n", align);
> + fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
> + new_block->user_len);
> + fprintf(export_file, EXPORT_FILE_LINE7_FMT "\n",
> + new_block->user_flags);
> + fprintf(export_file, EXPORT_FILE_LINE8_FMT "\n", align);
>  
>   fclose(export_file);
>   }
> @@ -800,6 +806,10 @@ int _odp_ishm_reserve(const char *name, uint64_t size, 
> int fd,
>   else
>   new_block->name[0] = 0;
>  
> + /* save user data: */
> + new_block->user_flags = user_flags;
> + new_block->user_len = size;
> +
>   /* If a file descriptor is provided, get the real size and map: */
>   if (fd >= 0) {
>   fstat(fd, &statbuf);
> @@ -911,9 +921,11 @@ int _odp_ishm_find_exported(const char *remote_name, 
> pid_t external_odp_pid,
>   FILE *export_file;
>   uint64_t len;
>   uint32_t flags;
> + uint64_t user_len;
> + uint32_t user_flags;
>   uint32_t align;
>   int fd;
> - int ret;
> + int block_index;
>  
>   /* try to read the block description file: */
>   snprintf(export_filename, ISHM_FILENAME_MAXLEN,
> @@ -943,7 +955,13 @@ int _odp_ishm_find_exported(const char *remote_name, 
> pid_t external_odp_pid,
>   if (fscanf(export_file, EXPORT_FILE_LINE5_FMT " ", &flags) != 1)
>   goto error_exp_file;
>  
> - if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &align) != 1)
> + if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &user_len) != 1)
> + goto error_exp_file;
> +
> + if (fscanf(export_file, EXPORT_FILE_LINE7_FMT " ", &user_flags) != 1)
> + goto error_exp_file;
> +
> + if (fscanf(export_file, EXPORT_FILE_LINE8_FMT " ", &align) != 1)
>   goto error_exp_file;
>  
>   fclose(export_file);
> @@ -960,13 +978,17 @@ int _odp_ishm_find_exported(const char *remote_name, 
> pid_t external_odp_pid,
>   flags &= ~(uint32_t)_ODP_ISHM_EXPORT;
>  
>   /* reserve the memory, providing the opened file descriptor: */
> - ret = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
> - if (ret < 0) {
> + block_index = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
> + if (block_index < 0) {
>   close(fd);
> - return ret;
> + return block_index;
>   }
>  
> - return ret;
> + /* set inherited info: */
> + ishm_tbl->block[block_index].user_flags = user_flags;
> + ishm_tbl->block[block_index].user_len = user_len;
> +
> + return block_index;
>  
>  error_exp_file:
>   fclose(export_file);
> diff --git a/test/linux-generic/validation/api/shmem/shmem_linux.c 
> b/test/linux-generic/validation/api/shmem/shmem_linux.c
> index 39473f3..2f4c762 100644
> --- a/test/linux-generic/validation/api/shmem/shmem_linux.c
> +++ b/test/linux-generic/validation/api/shmem/shmem_linux.c
> @@ -102,7 +102,8 @@
>   */
>  static int read_shmem_attribues(uint64_t ext_odp_pid, const char *blockname,
>   char *filename, uint64_t *len,
> - uint32_t *flags, uint32_t *align)
> + uint32_t *flags, uint64_t *user_len,
> + uint3

Re: [lng-odp] [API-NEXT PATCH 1/2] linux-gen: _ishm: exporting/importing user len and flags

2016-12-27 Thread Christophe Milard
It needs review, but yes: it is not driver related, i.e. it is
candidate for next.

Christophe.

On 27 December 2016 at 15:55, Maxim Uvarov  wrote:
> Thanks,
>
> that is what we discussed. I think that can go to 'next' also, right?
>
> Maxim.
>
> On 12/21/16 14:11, Christophe Milard wrote:
>> The size of the shared memory and its user flag set, as given at reserve
>> time, are exported and imported so that odp_shm_info() return proper
>> values on imported blocks
>>
>> Signed-off-by: Christophe Milard 
>> ---
>>  platform/linux-generic/_ishm.c | 38 
>> +-
>>  .../validation/api/shmem/shmem_linux.c | 14 ++--
>>  2 files changed, 42 insertions(+), 10 deletions(-)
>>
>> diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c
>> index 449e357..8b32709 100644
>> --- a/platform/linux-generic/_ishm.c
>> +++ b/platform/linux-generic/_ishm.c
>> @@ -124,7 +124,9 @@
>>  #define EXPORT_FILE_LINE3_FMT "file: %s"
>>  #define EXPORT_FILE_LINE4_FMT "length: %" PRIu64
>>  #define EXPORT_FILE_LINE5_FMT "flags: %" PRIu32
>> -#define EXPORT_FILE_LINE6_FMT "align: %" PRIu32
>> +#define EXPORT_FILE_LINE6_FMT "user_length: %" PRIu64
>> +#define EXPORT_FILE_LINE7_FMT "user_flags: %" PRIu32
>> +#define EXPORT_FILE_LINE8_FMT "align: %" PRIu32
>>  /*
>>   * A fragment describes a piece of the shared virtual address space,
>>   * and is allocated only when allocation is done with the 
>> _ODP_ISHM_SINGLE_VA
>> @@ -477,7 +479,11 @@ static int create_file(int block_index, huge_flag_t 
>> huge, uint64_t len,
>>   new_block->filename);
>>   fprintf(export_file, EXPORT_FILE_LINE4_FMT "\n", len);
>>   fprintf(export_file, EXPORT_FILE_LINE5_FMT "\n", 
>> flags);
>> - fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n", 
>> align);
>> + fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
>> + new_block->user_len);
>> + fprintf(export_file, EXPORT_FILE_LINE7_FMT "\n",
>> + new_block->user_flags);
>> + fprintf(export_file, EXPORT_FILE_LINE8_FMT "\n", 
>> align);
>>
>>   fclose(export_file);
>>   }
>> @@ -800,6 +806,10 @@ int _odp_ishm_reserve(const char *name, uint64_t size, 
>> int fd,
>>   else
>>   new_block->name[0] = 0;
>>
>> + /* save user data: */
>> + new_block->user_flags = user_flags;
>> + new_block->user_len = size;
>> +
>>   /* If a file descriptor is provided, get the real size and map: */
>>   if (fd >= 0) {
>>   fstat(fd, &statbuf);
>> @@ -911,9 +921,11 @@ int _odp_ishm_find_exported(const char *remote_name, 
>> pid_t external_odp_pid,
>>   FILE *export_file;
>>   uint64_t len;
>>   uint32_t flags;
>> + uint64_t user_len;
>> + uint32_t user_flags;
>>   uint32_t align;
>>   int fd;
>> - int ret;
>> + int block_index;
>>
>>   /* try to read the block description file: */
>>   snprintf(export_filename, ISHM_FILENAME_MAXLEN,
>> @@ -943,7 +955,13 @@ int _odp_ishm_find_exported(const char *remote_name, 
>> pid_t external_odp_pid,
>>   if (fscanf(export_file, EXPORT_FILE_LINE5_FMT " ", &flags) != 1)
>>   goto error_exp_file;
>>
>> - if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &align) != 1)
>> + if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &user_len) != 1)
>> + goto error_exp_file;
>> +
>> + if (fscanf(export_file, EXPORT_FILE_LINE7_FMT " ", &user_flags) != 1)
>> + goto error_exp_file;
>> +
>> + if (fscanf(export_file, EXPORT_FILE_LINE8_FMT " ", &align) != 1)
>>   goto error_exp_file;
>>
>>   fclose(export_file);
>> @@ -960,13 +978,17 @@ int _odp_ishm_find_exported(const char *remote_name, 
>> pid_t external_odp_pid,
>>   flags &= ~(uint32_t)_ODP_ISHM_EXPORT;
>>
>>   /* reserve the memory, providing the opened file descriptor: */
>> - ret = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
>> - if (ret < 0) {
>> + block_index = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
>> + if (block_index < 0) {
>>   close(fd);
>> - return ret;
>> + return block_index;
>>   }
>>
>> - return ret;
>> + /* set inherited info: */
>> + ishm_tbl->block[block_index].user_flags = user_flags;
>> + ishm_tbl->block[block_index].user_len = user_len;
>> +
>> + return block_index;
>>
>>  error_exp_file:
>>   fclose(export_file);
>> diff --git a/test/linux-generic/validation/api/shmem/shmem_linux.c 
>> b/test/linux-generic/validation/api/shmem/shmem_linux.c
>> index 39473f3..2f4c762 100644
>> --- a/test/linux-generic/validation/api/shmem/shmem_linux.c
>> +++ b/test/linux-generic/validation/api/shmem/shmem_linux.c
>> @@ -102,7 +102,8 @@
>>   */
>>  static int read_shmem_attribues(uint64_t e

Re: [lng-odp] [API-NEXT PATCH 1/2] linux-gen: _ishm: exporting/importing user len and flags

2016-12-27 Thread Maxim Uvarov
I merged it with my review.

Maxim.

On 27 December 2016 at 17:57, Christophe Milard <
christophe.mil...@linaro.org> wrote:

> It needs review, but yes: it is not driver related, i.e. it is
> candidate for next.
>
> Christophe.
>
> On 27 December 2016 at 15:55, Maxim Uvarov 
> wrote:
> > Thanks,
> >
> > that is what we discussed. I think that can go to 'next' also, right?
> >
> > Maxim.
> >
> > On 12/21/16 14:11, Christophe Milard wrote:
> >> The size of the shared memory and its user flag set, as given at reserve
> >> time, are exported and imported so that odp_shm_info() return proper
> >> values on imported blocks
> >>
> >> Signed-off-by: Christophe Milard 
> >> ---
> >>  platform/linux-generic/_ishm.c | 38
> +-
> >>  .../validation/api/shmem/shmem_linux.c | 14 ++--
> >>  2 files changed, 42 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_
> ishm.c
> >> index 449e357..8b32709 100644
> >> --- a/platform/linux-generic/_ishm.c
> >> +++ b/platform/linux-generic/_ishm.c
> >> @@ -124,7 +124,9 @@
> >>  #define EXPORT_FILE_LINE3_FMT "file: %s"
> >>  #define EXPORT_FILE_LINE4_FMT "length: %" PRIu64
> >>  #define EXPORT_FILE_LINE5_FMT "flags: %" PRIu32
> >> -#define EXPORT_FILE_LINE6_FMT "align: %" PRIu32
> >> +#define EXPORT_FILE_LINE6_FMT "user_length: %" PRIu64
> >> +#define EXPORT_FILE_LINE7_FMT "user_flags: %" PRIu32
> >> +#define EXPORT_FILE_LINE8_FMT "align: %" PRIu32
> >>  /*
> >>   * A fragment describes a piece of the shared virtual address space,
> >>   * and is allocated only when allocation is done with the
> _ODP_ISHM_SINGLE_VA
> >> @@ -477,7 +479,11 @@ static int create_file(int block_index,
> huge_flag_t huge, uint64_t len,
> >>   new_block->filename);
> >>   fprintf(export_file, EXPORT_FILE_LINE4_FMT "\n",
> len);
> >>   fprintf(export_file, EXPORT_FILE_LINE5_FMT "\n",
> flags);
> >> - fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
> align);
> >> + fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
> >> + new_block->user_len);
> >> + fprintf(export_file, EXPORT_FILE_LINE7_FMT "\n",
> >> + new_block->user_flags);
> >> + fprintf(export_file, EXPORT_FILE_LINE8_FMT "\n",
> align);
> >>
> >>   fclose(export_file);
> >>   }
> >> @@ -800,6 +806,10 @@ int _odp_ishm_reserve(const char *name, uint64_t
> size, int fd,
> >>   else
> >>   new_block->name[0] = 0;
> >>
> >> + /* save user data: */
> >> + new_block->user_flags = user_flags;
> >> + new_block->user_len = size;
> >> +
> >>   /* If a file descriptor is provided, get the real size and map: */
> >>   if (fd >= 0) {
> >>   fstat(fd, &statbuf);
> >> @@ -911,9 +921,11 @@ int _odp_ishm_find_exported(const char
> *remote_name, pid_t external_odp_pid,
> >>   FILE *export_file;
> >>   uint64_t len;
> >>   uint32_t flags;
> >> + uint64_t user_len;
> >> + uint32_t user_flags;
> >>   uint32_t align;
> >>   int fd;
> >> - int ret;
> >> + int block_index;
> >>
> >>   /* try to read the block description file: */
> >>   snprintf(export_filename, ISHM_FILENAME_MAXLEN,
> >> @@ -943,7 +955,13 @@ int _odp_ishm_find_exported(const char
> *remote_name, pid_t external_odp_pid,
> >>   if (fscanf(export_file, EXPORT_FILE_LINE5_FMT " ", &flags) != 1)
> >>   goto error_exp_file;
> >>
> >> - if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &align) != 1)
> >> + if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &user_len) !=
> 1)
> >> + goto error_exp_file;
> >> +
> >> + if (fscanf(export_file, EXPORT_FILE_LINE7_FMT " ", &user_flags)
> != 1)
> >> + goto error_exp_file;
> >> +
> >> + if (fscanf(export_file, EXPORT_FILE_LINE8_FMT " ", &align) != 1)
> >>   goto error_exp_file;
> >>
> >>   fclose(export_file);
> >> @@ -960,13 +978,17 @@ int _odp_ishm_find_exported(const char
> *remote_name, pid_t external_odp_pid,
> >>   flags &= ~(uint32_t)_ODP_ISHM_EXPORT;
> >>
> >>   /* reserve the memory, providing the opened file descriptor: */
> >> - ret = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
> >> - if (ret < 0) {
> >> + block_index = _odp_ishm_reserve(local_name, 0, fd, align, flags,
> 0);
> >> + if (block_index < 0) {
> >>   close(fd);
> >> - return ret;
> >> + return block_index;
> >>   }
> >>
> >> - return ret;
> >> + /* set inherited info: */
> >> + ishm_tbl->block[block_index].user_flags = user_flags;
> >> + ishm_tbl->block[block_index].user_len = user_len;
> >> +
> >> + return block_index;
> >>
> >>  error_exp_file:
> >>   fclose(export_file);
> >> diff --git a/test/lin

Re: [lng-odp] [API-NEXT PATCH 1/2] linux-gen: _ishm: exporting/importing user len and flags

2016-12-27 Thread Christophe Milard
Ok. thx

On 27 December 2016 at 16:21, Maxim Uvarov  wrote:
> I merged it with my review.
>
> Maxim.
>
> On 27 December 2016 at 17:57, Christophe Milard
>  wrote:
>>
>> It needs review, but yes: it is not driver related, i.e. it is
>> candidate for next.
>>
>> Christophe.
>>
>> On 27 December 2016 at 15:55, Maxim Uvarov 
>> wrote:
>> > Thanks,
>> >
>> > that is what we discussed. I think that can go to 'next' also, right?
>> >
>> > Maxim.
>> >
>> > On 12/21/16 14:11, Christophe Milard wrote:
>> >> The size of the shared memory and its user flag set, as given at
>> >> reserve
>> >> time, are exported and imported so that odp_shm_info() return proper
>> >> values on imported blocks
>> >>
>> >> Signed-off-by: Christophe Milard 
>> >> ---
>> >>  platform/linux-generic/_ishm.c | 38
>> >> +-
>> >>  .../validation/api/shmem/shmem_linux.c | 14 ++--
>> >>  2 files changed, 42 insertions(+), 10 deletions(-)
>> >>
>> >> diff --git a/platform/linux-generic/_ishm.c
>> >> b/platform/linux-generic/_ishm.c
>> >> index 449e357..8b32709 100644
>> >> --- a/platform/linux-generic/_ishm.c
>> >> +++ b/platform/linux-generic/_ishm.c
>> >> @@ -124,7 +124,9 @@
>> >>  #define EXPORT_FILE_LINE3_FMT "file: %s"
>> >>  #define EXPORT_FILE_LINE4_FMT "length: %" PRIu64
>> >>  #define EXPORT_FILE_LINE5_FMT "flags: %" PRIu32
>> >> -#define EXPORT_FILE_LINE6_FMT "align: %" PRIu32
>> >> +#define EXPORT_FILE_LINE6_FMT "user_length: %" PRIu64
>> >> +#define EXPORT_FILE_LINE7_FMT "user_flags: %" PRIu32
>> >> +#define EXPORT_FILE_LINE8_FMT "align: %" PRIu32
>> >>  /*
>> >>   * A fragment describes a piece of the shared virtual address space,
>> >>   * and is allocated only when allocation is done with the
>> >> _ODP_ISHM_SINGLE_VA
>> >> @@ -477,7 +479,11 @@ static int create_file(int block_index,
>> >> huge_flag_t huge, uint64_t len,
>> >>   new_block->filename);
>> >>   fprintf(export_file, EXPORT_FILE_LINE4_FMT "\n",
>> >> len);
>> >>   fprintf(export_file, EXPORT_FILE_LINE5_FMT "\n",
>> >> flags);
>> >> - fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
>> >> align);
>> >> + fprintf(export_file, EXPORT_FILE_LINE6_FMT "\n",
>> >> + new_block->user_len);
>> >> + fprintf(export_file, EXPORT_FILE_LINE7_FMT "\n",
>> >> + new_block->user_flags);
>> >> + fprintf(export_file, EXPORT_FILE_LINE8_FMT "\n",
>> >> align);
>> >>
>> >>   fclose(export_file);
>> >>   }
>> >> @@ -800,6 +806,10 @@ int _odp_ishm_reserve(const char *name, uint64_t
>> >> size, int fd,
>> >>   else
>> >>   new_block->name[0] = 0;
>> >>
>> >> + /* save user data: */
>> >> + new_block->user_flags = user_flags;
>> >> + new_block->user_len = size;
>> >> +
>> >>   /* If a file descriptor is provided, get the real size and map:
>> >> */
>> >>   if (fd >= 0) {
>> >>   fstat(fd, &statbuf);
>> >> @@ -911,9 +921,11 @@ int _odp_ishm_find_exported(const char
>> >> *remote_name, pid_t external_odp_pid,
>> >>   FILE *export_file;
>> >>   uint64_t len;
>> >>   uint32_t flags;
>> >> + uint64_t user_len;
>> >> + uint32_t user_flags;
>> >>   uint32_t align;
>> >>   int fd;
>> >> - int ret;
>> >> + int block_index;
>> >>
>> >>   /* try to read the block description file: */
>> >>   snprintf(export_filename, ISHM_FILENAME_MAXLEN,
>> >> @@ -943,7 +955,13 @@ int _odp_ishm_find_exported(const char
>> >> *remote_name, pid_t external_odp_pid,
>> >>   if (fscanf(export_file, EXPORT_FILE_LINE5_FMT " ", &flags) != 1)
>> >>   goto error_exp_file;
>> >>
>> >> - if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &align) != 1)
>> >> + if (fscanf(export_file, EXPORT_FILE_LINE6_FMT " ", &user_len) !=
>> >> 1)
>> >> + goto error_exp_file;
>> >> +
>> >> + if (fscanf(export_file, EXPORT_FILE_LINE7_FMT " ", &user_flags)
>> >> != 1)
>> >> + goto error_exp_file;
>> >> +
>> >> + if (fscanf(export_file, EXPORT_FILE_LINE8_FMT " ", &align) != 1)
>> >>   goto error_exp_file;
>> >>
>> >>   fclose(export_file);
>> >> @@ -960,13 +978,17 @@ int _odp_ishm_find_exported(const char
>> >> *remote_name, pid_t external_odp_pid,
>> >>   flags &= ~(uint32_t)_ODP_ISHM_EXPORT;
>> >>
>> >>   /* reserve the memory, providing the opened file descriptor: */
>> >> - ret = _odp_ishm_reserve(local_name, 0, fd, align, flags, 0);
>> >> - if (ret < 0) {
>> >> + block_index = _odp_ishm_reserve(local_name, 0, fd, align, flags,
>> >> 0);
>> >> + if (block_index < 0) {
>> >>   close(fd);
>> >> - return ret;
>> >> + return block_index;
>> >>   }
>> >>
>> >> - return ret;
>> >> + /* set inherited info: */
>> >> + ishm_tbl->block[blo