[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] Add io space MMAP for memory mapping devices and files
From: |
Jose E. Marchesi |
Subject: |
Re: [PATCH v2] Add io space MMAP for memory mapping devices and files |
Date: |
Mon, 08 Jan 2024 00:03:55 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
> Hi again,
>
> Andreas Klinger <ak@it-klinger.de> schrieb am Sa, 06. Jan 20:42:
>> Hi Jose,
>>
>> "Jose E. Marchesi" <jemarch@gnu.org> schrieb am Sa, 06. Jan 20:14:
>> > > I think that the approach of patch v2 could be optimized by a .set
>> > > alignment
>> > > variable for those guys who are aware of such hardware constraints on
>> > > their
>> > > architecture and want to optimize this. But I would set the default to a
>> > > value
>> > > which works for all, which is the size of the address bus.
>> >
>> > I think it is perfectly ok to have IOD specific configuration
>> > parameters, sure.
>> >
>> > Let's make it a Poke variable that the user can customize, plus a
>> > setting in the registry so the .set dot-command works on it. I suppose
>> > it shall have the name mmap in it, like pk_mmap_alignment. WDYT?
>>
>> great. It makes sense to name it mmap as it only applies to mmap io spaces.
> [...]
>
> After thinking about the problem again I came to a different solution which is
> much simpler, doesn't need an additional .set variable and avoids the signal
> handler as well as it is copying with the address bus size if possible, thus
> avoiding performance bottlenecks. The read function is as follows:
>
> static int
> ios_dev_mmap_pread (void *iod, void *buf, size_t count, ios_dev_off offset)
> {
> struct ios_dev_mmap *dev_map = iod;
> int align = sizeof(void*);
> char *m = buf;
>
> if (offset > dev_map->size || count > dev_map->size - offset)
> return IOD_EOF;
>
> /* copy unaligned bytes */
> while (count && offset % align)
> {
> memcpy (m, dev_map->addr + offset, 1);
> count--;
> offset++;
> m++;
> }
>
> /* copy with the address bus size */
> while (count >= align)
> {
> memcpy (m, dev_map->addr + offset, align);
This is still copying a byte at a time, isn't it?
> count -= align;
> offset += align;
> m += align;
> }
>
> /* copy remaining unaligned bytes */
> while (count)
> {
> memcpy (m, dev_map->addr + offset, 1);
> count--;
> offset++;
> m++;
> }
>
> return IOD_OK;
> }
>
> The write function is quite similar implemented in the same manner.
>
> WDYT?
>
> Andreas
- [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/05
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Mohammad-Reza Nabipoor, 2024/01/06
- Re: Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Mohammad-Reza Nabipoor, 2024/01/06
- Re: Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/06
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files,
Jose E. Marchesi <=
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/08
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/09
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/09
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Andreas Klinger, 2024/01/09
- Re: [PATCH v2] Add io space MMAP for memory mapping devices and files, Jose E. Marchesi, 2024/01/09