[PATCH v4 5/5] Change filesystem utime_h handler to utimens_h

Joel Sherrill joel at rtems.org
Sat May 15 22:30:20 UTC 2021


On Sat, May 15, 2021, 9:44 AM Joel Sherrill <joel.sherrill at gmail.com> wrote:

> IMD is the legal predecessor to Embedded Brains but Thomas probably should
> clear that
>

Thomas replied quite quickly and confirmed that it is ok to relicense. He
added to the ticket tracking this for future reference.

>
> I don't think we have heard from Oktet so that can't change.
>

Reverse this change. I've starting tracking the submitter down.

--joel

>
> On Sat, May 15, 2021, 9:06 AM Gedare Bloom <gedare at rtems.org> wrote:
>
>> On Fri, May 14, 2021 at 11:32 AM Ryan Long <ryan.long at oarcorp.com> wrote:
>> >
>> > Also updated licenses.
>> >
>> > Closes #4400
>> > ---
>> >  bsps/arm/csb337/umon/tfsDriver.c            |  2 +-
>> >  cpukit/Makefile.am                          |  4 +-
>> >  cpukit/include/rtems/confdefs/libio.h       |  4 +-
>> >  cpukit/include/rtems/imfs.h                 | 35 ++++++++++++-----
>> >  cpukit/include/rtems/libio.h                | 55
>> +++++++++++++++++----------
>> >  cpukit/libcsupport/src/__usrenv.c           | 39 +++++++++++++------
>> >  cpukit/libcsupport/src/futimens.c           |  2 +-
>> >  cpukit/libcsupport/src/utimensat.c          |  2 +-
>> >  cpukit/libfs/src/defaults/default_ops.c     | 34 ++++++++++++-----
>> >  cpukit/libfs/src/defaults/default_utime.c   | 32 ----------------
>> >  cpukit/libfs/src/defaults/default_utimens.c | 49
>> ++++++++++++++++++++++++
>> >  cpukit/libfs/src/dosfs/msdos_init.c         | 48
>> ++++++++++++++++--------
>> >  cpukit/libfs/src/ftpfs/ftpfs.c              | 44 ++++++++++++----------
>> >  cpukit/libfs/src/ftpfs/tftpDriver.c         | 28 +++++++++++---
>> >  cpukit/libfs/src/imfs/imfs_init.c           | 30 ++++++++++++---
>> >  cpukit/libfs/src/imfs/imfs_utime.c          | 41 --------------------
>> >  cpukit/libfs/src/imfs/imfs_utimens.c        | 58
>> +++++++++++++++++++++++++++++
>> >  cpukit/libfs/src/jffs2/src/fs-rtems.c       | 11 +++---
>> >  cpukit/libfs/src/rfs/rtems-rfs-rtems.c      | 16 ++++----
>> >  spec/build/cpukit/librtemscpu.yml           |  4 +-
>> >  20 files changed, 345 insertions(+), 193 deletions(-)
>> >  delete mode 100644 cpukit/libfs/src/defaults/default_utime.c
>> >  create mode 100644 cpukit/libfs/src/defaults/default_utimens.c
>> >  delete mode 100644 cpukit/libfs/src/imfs/imfs_utime.c
>> >  create mode 100644 cpukit/libfs/src/imfs/imfs_utimens.c
>> >
>> > diff --git a/bsps/arm/csb337/umon/tfsDriver.c
>> b/bsps/arm/csb337/umon/tfsDriver.c
>> > index 0195346..caf3a4b 100644
>> > --- a/bsps/arm/csb337/umon/tfsDriver.c
>> > +++ b/bsps/arm/csb337/umon/tfsDriver.c
>> > @@ -657,7 +657,7 @@ static const rtems_filesystem_operations_table
>> rtems_tfs_ops = {
>> >    .mount_h = rtems_filesystem_default_mount,
>> >    .unmount_h = rtems_filesystem_default_unmount,
>> >    .fsunmount_me_h = rtems_filesystem_default_fsunmount,
>> > -  .utime_h = rtems_filesystem_default_utime,
>> > +  .utimens_h = rtems_filesystem_default_utimens,
>> >    .symlink_h = rtems_filesystem_default_symlink,
>> >    .readlink_h = rtems_filesystem_default_readlink,
>> >    .rename_h = rtems_filesystem_default_rename,
>> > diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
>> > index 29b4207..c144773 100644
>> > --- a/cpukit/Makefile.am
>> > +++ b/cpukit/Makefile.am
>> > @@ -377,7 +377,7 @@ librtemscpu_a_SOURCES +=
>> libfs/src/defaults/default_rmnod.c
>> >  librtemscpu_a_SOURCES += libfs/src/defaults/default_statvfs.c
>> >  librtemscpu_a_SOURCES += libfs/src/defaults/default_symlink.c
>> >  librtemscpu_a_SOURCES += libfs/src/defaults/default_unmount.c
>> > -librtemscpu_a_SOURCES += libfs/src/defaults/default_utime.c
>> > +librtemscpu_a_SOURCES += libfs/src/defaults/default_utimens.c
>> >  librtemscpu_a_SOURCES += libfs/src/defaults/default_write.c
>> >  librtemscpu_a_SOURCES += libfs/src/defaults/default_writev.c
>> >  librtemscpu_a_SOURCES += libfs/src/dosfs/fat.c
>> > @@ -434,7 +434,7 @@ librtemscpu_a_SOURCES += libfs/src/imfs/imfs_stat.c
>> >  librtemscpu_a_SOURCES += libfs/src/imfs/imfs_stat_file.c
>> >  librtemscpu_a_SOURCES += libfs/src/imfs/imfs_symlink.c
>> >  librtemscpu_a_SOURCES += libfs/src/imfs/imfs_unmount.c
>> > -librtemscpu_a_SOURCES += libfs/src/imfs/imfs_utime.c
>> > +librtemscpu_a_SOURCES += libfs/src/imfs/imfs_utimens.c
>> >  librtemscpu_a_SOURCES += libfs/src/imfs/ioman.c
>> >  librtemscpu_a_SOURCES += libfs/src/pipe/fifo.c
>> >  librtemscpu_a_SOURCES += libfs/src/pipe/pipe.c
>> > diff --git a/cpukit/include/rtems/confdefs/libio.h
>> b/cpukit/include/rtems/confdefs/libio.h
>> > index 16a4fb69..1b84f8c 100644
>> > --- a/cpukit/include/rtems/confdefs/libio.h
>> > +++ b/cpukit/include/rtems/confdefs/libio.h
>> > @@ -231,9 +231,9 @@ static const rtems_filesystem_operations_table
>> IMFS_root_ops = {
>> >    #endif
>> >    rtems_filesystem_default_fsunmount,
>> >    #ifdef CONFIGURE_IMFS_DISABLE_UTIME
>> > -    rtems_filesystem_default_utime,
>> > +    rtems_filesystem_default_utimens,
>> >    #else
>> > -    IMFS_utime,
>> > +    IMFS_utimens,
>> >    #endif
>> >    #ifdef CONFIGURE_IMFS_DISABLE_SYMLINK
>> >      rtems_filesystem_default_symlink,
>> > diff --git a/cpukit/include/rtems/imfs.h b/cpukit/include/rtems/imfs.h
>> > index b2a9868..57c498c 100644
>> > --- a/cpukit/include/rtems/imfs.h
>> > +++ b/cpukit/include/rtems/imfs.h
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -5,12 +7,28 @@
>> >   */
>> >
>> >  /*
>> > - *  COPYRIGHT (c) 1989-2011.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > - *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > + * COPYRIGHT (C) 1989, 2021 On-Line Applications Research Corporation
>> (OAR).
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> > + *
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifndef _RTEMS_IMFS_H
>> > @@ -954,10 +972,9 @@ extern int device_ftruncate(
>> >   * This routine is the implementation of the utime() system
>> >   * call for the IMFS.
>> >   */
>> > -extern int IMFS_utime(
>> > +extern int IMFS_utimens(
>> >    const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > +  struct timespec times[2]
>> >  );
>> >
>> >  /**
>> > diff --git a/cpukit/include/rtems/libio.h b/cpukit/include/rtems/libio.h
>> > index 519e797..5379d92 100644
>> > --- a/cpukit/include/rtems/libio.h
>> > +++ b/cpukit/include/rtems/libio.h
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -11,15 +13,31 @@
>> >   */
>> >
>> >  /*
>> > - *  COPYRIGHT (c) 1989-2008.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > - *
>> > - *  Modifications to support reference counting in the file system are
>> > - *  Copyright (c) 2012 embedded brains GmbH.
>> > - *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > + * COPYRIGHT (C) 1989, 2021 On-Line Applications Research Corporation
>> (OAR).
>> > + *
>> > + * Modifications to support reference counting in the file system are
>> > + * Copyright (C) 2012 embedded brains GmbH.
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> > + *
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifndef _RTEMS_RTEMS_LIBIO_H
>> > @@ -375,18 +393,16 @@ typedef int (*rtems_filesystem_rmnod_t)(
>> >   * @brief Set node access and modification times.
>> >   *
>> >   * @param[in] loc The location of the node.
>> > - * @param[in] actime Access time for the node.
>> > - * @param[in] modtime Modification for the node.
>> > + * @param[in] times Access and modification times for the node
>> >   *
>> >   * @retval 0 Successful operation.
>> >   * @retval -1 An error occurred.  The errno is set to indicate the
>> error.
>> >   *
>> > - * @see rtems_filesystem_default_utime().
>> > + * @see rtems_filesystem_default_utimens().
>> >   */
>> > -typedef int (*rtems_filesystem_utime_t)(
>> > +typedef int (*rtems_filesystem_utimens_t)(
>> >    const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > +  struct timespec times[2]
>> >  );
>> >
>> >  /**
>> > @@ -484,7 +500,7 @@ struct _rtems_filesystem_operations_table {
>> >    rtems_filesystem_mount_t mount_h;
>> >    rtems_filesystem_unmount_t unmount_h;
>> >    rtems_filesystem_fsunmount_me_t fsunmount_me_h;
>> > -  rtems_filesystem_utime_t utime_h;
>> > +  rtems_filesystem_utimens_t utimens_h;
>> >    rtems_filesystem_symlink_t symlink_h;
>> >    rtems_filesystem_readlink_t readlink_h;
>> >    rtems_filesystem_rename_t rename_h;
>> > @@ -644,12 +660,11 @@ void rtems_filesystem_default_fsunmount(
>> >  /**
>> >   * @retval -1 Always.  The errno is set to ENOTSUP.
>> >   *
>> > - * @see rtems_filesystem_utime_t.
>> > + * @see rtems_filesystem_utimens_t.
>> >   */
>> > -int rtems_filesystem_default_utime(
>> > +int rtems_filesystem_default_utimens(
>> >    const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > +  struct timespec times[2]
>> >  );
>> >
>> >  /**
>> > diff --git a/cpukit/libcsupport/src/__usrenv.c
>> b/cpukit/libcsupport/src/__usrenv.c
>> > index 5c25eaa..ebafa9e 100644
>> > --- a/cpukit/libcsupport/src/__usrenv.c
>> > +++ b/cpukit/libcsupport/src/__usrenv.c
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   *  @file
>> >   *
>> > @@ -6,15 +8,31 @@
>> >   */
>> >
>> >  /*
>> > - *  COPYRIGHT (c) 1989-2008.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > + * COPYRIGHT (C) 2021 On-Line Applications Research Corporation (OAR).
>> > + *
>> > + * Modifications to support reference counting in the file system are
>> > + * Copyright (c) 2012 embedded brains GmbH.
>> >   *
>> > - *  Modifications to support reference counting in the file system are
>> > - *  Copyright (c) 2012 embedded brains GmbH.
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> >   *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifdef HAVE_CONFIG_H
>> > @@ -145,10 +163,9 @@ static void null_op_fsunmount_me(
>> >    /* Do nothing */
>> >  }
>> >
>> > -static int null_op_utime(
>> > +static int null_op_utimens(
>> >    const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > +  struct timespec times[2]
>> >  )
>> >  {
>> >    return -1;
>> > @@ -207,7 +224,7 @@ static const rtems_filesystem_operations_table
>> null_ops = {
>> >    .mount_h = null_op_mount,
>> >    .unmount_h = null_op_unmount,
>> >    .fsunmount_me_h = null_op_fsunmount_me,
>> > -  .utime_h = null_op_utime,
>> > +  .utimens_h = null_op_utimens,
>> >    .symlink_h = null_op_symlink,
>> >    .readlink_h = null_op_readlink,
>> >    .rename_h = null_op_rename,
>> > diff --git a/cpukit/libcsupport/src/futimens.c
>> b/cpukit/libcsupport/src/futimens.c
>> > index f82c782..151e7a1 100644
>> > --- a/cpukit/libcsupport/src/futimens.c
>> > +++ b/cpukit/libcsupport/src/futimens.c
>> > @@ -76,7 +76,7 @@ int futimens(
>> >      return rv;
>> >    }
>> >
>> > -  rv = (*currentloc->mt_entry->ops->utime_h)(
>> > +  rv = (*currentloc->mt_entry->ops->utimens_h)(
>> >      currentloc,
>> >      new_times
>> >    );
>> > diff --git a/cpukit/libcsupport/src/utimensat.c
>> b/cpukit/libcsupport/src/utimensat.c
>> > index 3e91b65..c053218 100644
>> > --- a/cpukit/libcsupport/src/utimensat.c
>> > +++ b/cpukit/libcsupport/src/utimensat.c
>> > @@ -214,7 +214,7 @@ int utimensat(
>> >      return rv;
>> >    }
>> >
>> > -  rv = (*currentloc->mt_entry->ops->utime_h)(
>> > +  rv = (*currentloc->mt_entry->ops->utimens_h)(
>> >      currentloc,
>> >      new_times
>> >    );
>> > diff --git a/cpukit/libfs/src/defaults/default_ops.c
>> b/cpukit/libfs/src/defaults/default_ops.c
>> > index 63ad2ce..45069e7 100644
>> > --- a/cpukit/libfs/src/defaults/default_ops.c
>> > +++ b/cpukit/libfs/src/defaults/default_ops.c
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -7,16 +9,28 @@
>> >   */
>> >
>> >  /*
>> > - * Copyright (c) 2010
>> > - * embedded brains GmbH
>> > - * Obere Lagerstr. 30
>> > - * D-82178 Puchheim
>> > - * Germany
>> > - * <rtems at embedded-brains.de>
>> > + * Copyright (C) 2010 embedded brains GmbH
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> >   *
>> > - * The license and distribution terms for this file may be
>> > - * found in the file LICENSE in this distribution or at
>> > - * http://www.rtems.org/license/LICENSE.
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #include <rtems/libio.h>
>> > @@ -36,7 +50,7 @@ const rtems_filesystem_operations_table
>> rtems_filesystem_operations_default = {
>> >    .mount_h = rtems_filesystem_default_mount,
>> >    .unmount_h = rtems_filesystem_default_unmount,
>> >    .fsunmount_me_h = rtems_filesystem_default_fsunmount,
>> > -  .utime_h = rtems_filesystem_default_utime,
>> > +  .utimens_h = rtems_filesystem_default_utimens,
>> >    .symlink_h = rtems_filesystem_default_symlink,
>> >    .readlink_h = rtems_filesystem_default_readlink,
>> >    .rename_h = rtems_filesystem_default_rename,
>> > diff --git a/cpukit/libfs/src/defaults/default_utime.c
>> b/cpukit/libfs/src/defaults/default_utime.c
>> > deleted file mode 100644
>> > index aaf4e44..0000000
>> > --- a/cpukit/libfs/src/defaults/default_utime.c
>> > +++ /dev/null
>> > @@ -1,32 +0,0 @@
>> > -/**
>> > - * @file
>> > - *
>> > - * @ingroup LibIOFSOps File System Operations
>> > - *
>> > - * @brief RTEMS Default File System sets file access and modification
>> times
>> > - */
>> > -
>> > -/*
>> > - *  COPYRIGHT (c) 2010.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > - *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > - */
>> > -
>> > -#ifdef HAVE_CONFIG_H
>> > -#include "config.h"
>> > -#endif
>> > -
>> > -#include <rtems/libio_.h>
>> > -#include <rtems/seterr.h>
>> > -
>> > -int rtems_filesystem_default_utime(
>> > -  const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > -)
>> > -{
>> > -  rtems_set_errno_and_return_minus_one( ENOTSUP );
>> > -}
>> > diff --git a/cpukit/libfs/src/defaults/default_utimens.c
>> b/cpukit/libfs/src/defaults/default_utimens.c
>> > new file mode 100644
>> > index 0000000..c2321dc
>> > --- /dev/null
>> > +++ b/cpukit/libfs/src/defaults/default_utimens.c
>> > @@ -0,0 +1,49 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> > +/**
>> > + * @file
>> > + *
>> > + * @ingroup LibIOFSOps File System Operations
>> > + *
>> > + * @brief RTEMS Default File System sets file access and modification
>> times
>> > + */
>> > +
>> > +/*
>> > + * COPYRIGHT (C) 2010, 2021 On-Line Applications Research Corporation
>> (OAR).
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> > + *
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> > +*/
>> > +
>> > +#ifdef HAVE_CONFIG_H
>> > +#include "config.h"
>> > +#endif
>> > +
>> > +#include <rtems/libio_.h>
>> > +#include <rtems/seterr.h>
>> > +
>> > +int rtems_filesystem_default_utimens(
>> > +  const rtems_filesystem_location_info_t *loc,
>> > +  struct timespec times[2]
>> > +)
>> > +{
>> > +  rtems_set_errno_and_return_minus_one( ENOTSUP );
>> > +}
>> > diff --git a/cpukit/libfs/src/dosfs/msdos_init.c
>> b/cpukit/libfs/src/dosfs/msdos_init.c
>> > index 67b16b6..6eacc00 100644
>> > --- a/cpukit/libfs/src/dosfs/msdos_init.c
>> > +++ b/cpukit/libfs/src/dosfs/msdos_init.c
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -7,20 +9,37 @@
>> >   */
>> >
>> >  /*
>> > - *  Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
>> > - *  Author: Eugeny S. Mints <Eugeny.Mints at oktet.ru>
>> > + * Copyright (C) 2001 OKTET Ltd.
>>
>> do we have permission to change this one? Does their original code
>> still exist here?
>>
>> > + *
>> > + * Modifications to support reference counting in the file system are
>> > + * Copyright (C) 2012 embedded brains GmbH.
>> >   *
>> > - *  Modifications to support reference counting in the file system are
>> > - *  Copyright (c) 2012 embedded brains GmbH.
>> > + * Modifications to support UTF-8 in the file system are
>> > + * Copyright (C) 2013 embedded brains GmbH.
>> >   *
>> > - *  Modifications to support UTF-8 in the file system are
>> > - *  Copyright (c) 2013 embedded brains GmbH.
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> >   *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> > +
>> >  #ifdef HAVE_CONFIG_H
>> >  #include "config.h"
>> >  #endif
>> > @@ -36,18 +55,17 @@ static int
>> msdos_clone_node_info(rtems_filesystem_location_info_t *loc)
>> >      return fat_file_reopen(fat_fd);
>> >  }
>> >
>> > -static int msdos_utime(
>> > +static int msdos_utimens(
>> >    const rtems_filesystem_location_info_t *loc,
>> > -  time_t                                  actime,
>> > -  time_t                                  modtime
>> > +  struct timespec                         times[2]
>> >  )
>> >  {
>> >      fat_file_fd_t *fat_fd = loc->node_access;
>> >
>> > -    if (actime != modtime)
>> > +    if (times[0].tv_sec != times[1].tv_sec)
>> >          rtems_set_errno_and_return_minus_one( ENOTSUP );
>> >
>> > -    fat_file_set_mtime(fat_fd, modtime);
>> > +    fat_file_set_mtime(fat_fd, times[1].tv_sec);
>> >
>> >      return RC_OK;
>> >  }
>> > @@ -67,7 +85,7 @@ const rtems_filesystem_operations_table  msdos_ops = {
>> >    .mount_h        =  rtems_filesystem_default_mount,
>> >    .unmount_h      =  rtems_filesystem_default_unmount,
>> >    .fsunmount_me_h =  msdos_shut_down,
>> > -  .utime_h        =  msdos_utime,
>> > +  .utimens_h      =  msdos_utimens,
>> >    .symlink_h      =  rtems_filesystem_default_symlink,
>> >    .readlink_h     =  rtems_filesystem_default_readlink,
>> >    .rename_h       =  msdos_rename,
>> > diff --git a/cpukit/libfs/src/ftpfs/ftpfs.c
>> b/cpukit/libfs/src/ftpfs/ftpfs.c
>> > index 5e0cb95..06d06bc 100644
>> > --- a/cpukit/libfs/src/ftpfs/ftpfs.c
>> > +++ b/cpukit/libfs/src/ftpfs/ftpfs.c
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -5,27 +7,29 @@
>> >   */
>> >
>> >  /*
>> > - * Copyright (c) 2009-2012 embedded brains GmbH.
>> > - *
>> > - *  embedded brains GmbH
>> > - *  Obere Lagerstr. 30
>> > - *  82178 Puchheim
>> > - *  Germany
>> > - *  <rtems at embedded-brains.de>
>> > - *
>> > - * (c) Copyright 2002
>> > - * Thomas Doerfler
>> > - * IMD Ingenieurbuero fuer Microcomputertechnik
>> > - * Herbststr. 8
>> > - * 82178 Puchheim, Germany
>> > - * <Thomas.Doerfler at imd-systems.de>
>> > + * COPYRIGHT (C) 2009-2012 embedded brains GmbH.
>> > + * COPYRIGHT (C) 2002 IMD Ingenieurbuero fuer Microcomputertechnik.
>>
>> Ask Thomas if this one can be changed.
>>
>> >   *
>> > - * This code has been created after closly inspecting "tftpdriver.c"
>> from Eric
>> > - * Norum.
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> >   *
>> > - * The license and distribution terms for this file may be
>> > - * found in the file LICENSE in this distribution or at
>> > - * http://www.rtems.org/license/LICENSE.
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifdef HAVE_CONFIG_H
>> > @@ -1384,7 +1388,7 @@ static const rtems_filesystem_operations_table
>> rtems_ftpfs_ops = {
>> >    .mount_h = rtems_filesystem_default_mount,
>> >    .unmount_h = rtems_filesystem_default_unmount,
>> >    .fsunmount_me_h = rtems_ftpfs_unmount_me,
>> > -  .utime_h = rtems_filesystem_default_utime,
>> > +  .utimens_h = rtems_filesystem_default_utimens,
>> >    .symlink_h = rtems_filesystem_default_symlink,
>> >    .readlink_h = rtems_filesystem_default_readlink,
>> >    .rename_h = rtems_filesystem_default_rename,
>> > diff --git a/cpukit/libfs/src/ftpfs/tftpDriver.c
>> b/cpukit/libfs/src/ftpfs/tftpDriver.c
>> > index 7cbb402..7dc60b2 100644
>> > --- a/cpukit/libfs/src/ftpfs/tftpDriver.c
>> > +++ b/cpukit/libfs/src/ftpfs/tftpDriver.c
>> > @@ -1,8 +1,6 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /*
>> > - * Trivial File Transfer Protocol (RFC 1350)
>> > - *
>> > - * Transfer file to/from remote host
>> > - *
>> >   * W. Eric Norum
>> >   * Saskatchewan Accelerator Laboratory
>> >   * University of Saskatchewan
>> > @@ -12,6 +10,26 @@
>> >   * Modifications to support reference counting in the file system are
>> >   * Copyright (c) 2012 embedded brains GmbH.
>> >   *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> > + *
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifdef HAVE_CONFIG_H
>> > @@ -1039,7 +1057,7 @@ static const rtems_filesystem_operations_table
>> rtems_tftp_ops = {
>> >      .mount_h = rtems_filesystem_default_mount,
>> >      .unmount_h = rtems_filesystem_default_unmount,
>> >      .fsunmount_me_h = rtems_tftpfs_shutdown,
>> > -    .utime_h = rtems_filesystem_default_utime,
>> > +    .utimens_h = rtems_filesystem_default_utimens,
>> >      .symlink_h = rtems_filesystem_default_symlink,
>> >      .readlink_h = rtems_filesystem_default_readlink,
>> >      .rename_h = rtems_filesystem_default_rename,
>> > diff --git a/cpukit/libfs/src/imfs/imfs_init.c
>> b/cpukit/libfs/src/imfs/imfs_init.c
>> > index 1b9b769..8685caa 100644
>> > --- a/cpukit/libfs/src/imfs/imfs_init.c
>> > +++ b/cpukit/libfs/src/imfs/imfs_init.c
>> > @@ -1,3 +1,5 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> >  /**
>> >   * @file
>> >   *
>> > @@ -7,12 +9,28 @@
>> >   */
>> >
>> >  /*
>> > - *  COPYRIGHT (c) 1989-1999.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > + * COPYRIGHT (C) 1989, 2021 On-Line Applications Research Corporation
>> (OAR).
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> >   *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> >   */
>> >
>> >  #ifdef HAVE_CONFIG_H
>> > @@ -40,7 +58,7 @@ static const rtems_filesystem_operations_table
>> IMFS_ops = {
>> >    .mount_h = IMFS_mount,
>> >    .unmount_h = IMFS_unmount,
>> >    .fsunmount_me_h = IMFS_fsunmount,
>> > -  .utime_h = IMFS_utime,
>> > +  .utimens_h = IMFS_utimens,
>> >    .symlink_h = IMFS_symlink,
>> >    .readlink_h = IMFS_readlink,
>> >    .rename_h = IMFS_rename,
>> > diff --git a/cpukit/libfs/src/imfs/imfs_utime.c
>> b/cpukit/libfs/src/imfs/imfs_utime.c
>> > deleted file mode 100644
>> > index 21e5139..0000000
>> > --- a/cpukit/libfs/src/imfs/imfs_utime.c
>> > +++ /dev/null
>> > @@ -1,41 +0,0 @@
>> > -/**
>> > - * @file
>> > - *
>> > - * @ingroup IMFS
>> > - *
>> > - * @brief Set IMFS File Access and Modification Times
>> > - */
>> > -
>> > -/*
>> > - *  COPYRIGHT (c) 1989-1999.
>> > - *  On-Line Applications Research Corporation (OAR).
>> > - *
>> > - *  The license and distribution terms for this file may be
>> > - *  found in the file LICENSE in this distribution or at
>> > - *  http://www.rtems.org/license/LICENSE.
>> > - */
>> > -
>> > -#ifdef HAVE_CONFIG_H
>> > -#include "config.h"
>> > -#endif
>> > -
>> > -#include <rtems/imfs.h>
>> > -
>> > -#include <sys/time.h>
>> > -
>> > -int IMFS_utime(
>> > -  const rtems_filesystem_location_info_t *loc,
>> > -  time_t actime,
>> > -  time_t modtime
>> > -)
>> > -{
>> > -  IMFS_jnode_t *the_jnode;
>> > -
>> > -  the_jnode = (IMFS_jnode_t *) loc->node_access;
>> > -
>> > -  the_jnode->stat_atime = actime;
>> > -  the_jnode->stat_mtime = modtime;
>> > -  the_jnode->stat_ctime = time( NULL );
>> > -
>> > -  return 0;
>> > -}
>> > diff --git a/cpukit/libfs/src/imfs/imfs_utimens.c
>> b/cpukit/libfs/src/imfs/imfs_utimens.c
>> > new file mode 100644
>> > index 0000000..e38802c
>> > --- /dev/null
>> > +++ b/cpukit/libfs/src/imfs/imfs_utimens.c
>> > @@ -0,0 +1,58 @@
>> > +/* SPDX-License-Identifier: BSD-2-Clause */
>> > +
>> > +/**
>> > + * @file
>> > + *
>> > + * @ingroup IMFS
>> > + *
>> > + * @brief Set IMFS File Access and Modification Times
>> > + */
>> > +
>> > +/*
>> > + * COPYRIGHT (C) 1989, 2021 On-Line Applications Research Corporation
>> (OAR).
>> > + *
>> > + * Redistribution and use in source and binary forms, with or without
>> > + * modification, are permitted provided that the following conditions
>> > + * are met:
>> > + * 1. Redistributions of source code must retain the above copyright
>> > + *    notice, this list of conditions and the following disclaimer.
>> > + * 2. Redistributions in binary form must reproduce the above copyright
>> > + *    notice, this list of conditions and the following disclaimer in
>> the
>> > + *    documentation and/or other materials provided with the
>> distribution.
>> > + *
>> > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> "AS IS"
>> > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
>> TO, THE
>> > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>> PURPOSE
>> > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
>> CONTRIBUTORS BE
>> > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
>> BUSINESS
>> > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
>> WHETHER IN
>> > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
>> OTHERWISE)
>> > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>> OF THE
>> > + * POSSIBILITY OF SUCH DAMAGE.
>> > +*/
>> > +
>> > +#ifdef HAVE_CONFIG_H
>> > +#include "config.h"
>> > +#endif
>> > +
>> > +#include <rtems/imfs.h>
>> > +
>> > +#include <sys/time.h>
>> > +
>> > +int IMFS_utimens(
>> > +  const rtems_filesystem_location_info_t *loc,
>> > +  struct timespec times[2]
>> > +)
>> > +{
>> > +  IMFS_jnode_t *the_jnode;
>> > +
>> > +  the_jnode = (IMFS_jnode_t *) loc->node_access;
>> > +
>> > +  the_jnode->stat_atime = times[0].tv_sec;
>> > +  the_jnode->stat_mtime = times[1].tv_sec;
>> > +  the_jnode->stat_ctime = time( NULL );
>> > +
>> > +  return 0;
>> > +}
>> > diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c
>> b/cpukit/libfs/src/jffs2/src/fs-rtems.c
>> > index aae208c..8bc3d85 100644
>> > --- a/cpukit/libfs/src/jffs2/src/fs-rtems.c
>> > +++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c
>> > @@ -1118,10 +1118,9 @@ static int rtems_jffs2_statvfs(
>> >         return 0;
>> >  }
>> >
>> > -static int rtems_jffs2_utime(
>> > +static int rtems_jffs2_utimens(
>> >         const rtems_filesystem_location_info_t *loc,
>> > -       time_t actime,
>> > -       time_t modtime
>> > +       struct timespec times[2]
>> >  )
>> >  {
>> >         struct _inode *inode = rtems_jffs2_get_inode_by_location(loc);
>> > @@ -1129,8 +1128,8 @@ static int rtems_jffs2_utime(
>> >         int eno;
>> >
>> >         iattr.ia_valid = ATTR_ATIME | ATTR_MTIME | ATTR_CTIME;
>> > -       iattr.ia_atime = actime;
>> > -       iattr.ia_mtime = modtime;
>> > +       iattr.ia_atime = times[0].tv_sec;
>> > +       iattr.ia_mtime = times[1].tv_sec;
>> >         iattr.ia_ctime = get_seconds();
>> >
>> >         eno = -jffs2_do_setattr(inode, &iattr);
>> > @@ -1186,7 +1185,7 @@ static const rtems_filesystem_operations_table
>> rtems_jffs2_ops = {
>> >         .mount_h = rtems_filesystem_default_mount,
>> >         .unmount_h = rtems_filesystem_default_unmount,
>> >         .fsunmount_me_h = rtems_jffs2_fsunmount,
>> > -       .utime_h = rtems_jffs2_utime,
>> > +       .utimens_h = rtems_jffs2_utimens,
>> >         .symlink_h = rtems_jffs2_symlink,
>> >         .readlink_h = rtems_jffs2_readlink,
>> >         .rename_h = rtems_jffs2_rename,
>> > diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems.c
>> b/cpukit/libfs/src/rfs/rtems-rfs-rtems.c
>> > index 35db9ee..0efab2c 100644
>> > --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems.c
>> > +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems.c
>> > @@ -296,16 +296,14 @@ rtems_rfs_rtems_chown (const
>> rtems_filesystem_location_info_t *pathloc,
>> >   * This routine is the implementation of the utime() system call for
>> the
>> >   * RFS.
>> >   *
>> > - * @param pathloc
>> > - * @param atime
>> > - * @param mtime
>> > + * @param pathloc The path to the file to be modified
>> > + * @param times The times to update the file to
>> >   * return int
>> >   */
>> >
>> >  static int
>> > -rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
>> > -                      time_t                                  atime,
>> > -                      time_t                                  mtime)
>> > +rtems_rfs_rtems_utimens(const rtems_filesystem_location_info_t*
>> pathloc,
>> > +                        struct timespec
>>  times[2])
>> >  {
>> >    rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
>> >    rtems_rfs_ino          ino = rtems_rfs_rtems_get_pathloc_ino
>> (pathloc);
>> > @@ -318,8 +316,8 @@ rtems_rfs_rtems_utime(const
>> rtems_filesystem_location_info_t* pathloc,
>> >      return rtems_rfs_rtems_error ("utime: read inode", rc);
>> >    }
>> >
>> > -  rtems_rfs_inode_set_atime (&inode, atime);
>> > -  rtems_rfs_inode_set_mtime (&inode, mtime);
>> > +  rtems_rfs_inode_set_atime (&inode, times[0].tv_sec);
>> > +  rtems_rfs_inode_set_mtime (&inode, times[1].tv_sec);
>> >
>> >    rc = rtems_rfs_inode_close (fs, &inode);
>> >    if (rc)
>> > @@ -735,7 +733,7 @@ const rtems_filesystem_operations_table
>> rtems_rfs_ops =
>> >    .mount_h        = rtems_filesystem_default_mount,
>> >    .unmount_h      = rtems_filesystem_default_unmount,
>> >    .fsunmount_me_h = rtems_rfs_rtems_shutdown,
>> > -  .utime_h        = rtems_rfs_rtems_utime,
>> > +  .utimens_h      = rtems_rfs_rtems_utimens,
>> >    .symlink_h      = rtems_rfs_rtems_symlink,
>> >    .readlink_h     = rtems_rfs_rtems_readlink,
>> >    .rename_h       = rtems_rfs_rtems_rename,
>> > diff --git a/spec/build/cpukit/librtemscpu.yml
>> b/spec/build/cpukit/librtemscpu.yml
>> > index 7f36ef7..133c84c 100644
>> > --- a/spec/build/cpukit/librtemscpu.yml
>> > +++ b/spec/build/cpukit/librtemscpu.yml
>> > @@ -804,7 +804,7 @@ source:
>> >  - cpukit/libfs/src/defaults/default_statvfs.c
>> >  - cpukit/libfs/src/defaults/default_symlink.c
>> >  - cpukit/libfs/src/defaults/default_unmount.c
>> > -- cpukit/libfs/src/defaults/default_utime.c
>> > +- cpukit/libfs/src/defaults/default_utimens.c
>> >  - cpukit/libfs/src/defaults/default_write.c
>> >  - cpukit/libfs/src/defaults/default_writev.c
>> >  - cpukit/libfs/src/dosfs/fat.c
>> > @@ -861,7 +861,7 @@ source:
>> >  - cpukit/libfs/src/imfs/imfs_stat_file.c
>> >  - cpukit/libfs/src/imfs/imfs_symlink.c
>> >  - cpukit/libfs/src/imfs/imfs_unmount.c
>> > -- cpukit/libfs/src/imfs/imfs_utime.c
>> > +- cpukit/libfs/src/imfs/imfs_utimens.c
>> >  - cpukit/libfs/src/imfs/ioman.c
>> >  - cpukit/libfs/src/pipe/fifo.c
>> >  - cpukit/libfs/src/pipe/pipe.c
>> > --
>> > 1.8.3.1
>> >
>> > _______________________________________________
>> > devel mailing list
>> > devel at rtems.org
>> > http://lists.rtems.org/mailman/listinfo/devel
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210515/d4e4f0ec/attachment-0001.html>


More information about the devel mailing list