<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def futimens(fd, ns):
 """ set inode atime and mtime ns is (atime, mtime), a pair of struct timespec with nanosecond resolution. """


    # ctime can't easily be reset
    # also, we have no way to do mandatory locking without
    # changing the ctime.
    times = ffi.new('struct timespec[2]')
    atime, mtime = ns
    assert 0 <= atime.tv_nsec < 1e9
    assert 0 <= mtime.tv_nsec < 1e9
    times[0] = atime
    times[1] = mtime
    if lib.futimens(fd, times) != 0:
        raise IOError(
            ffi.errno, os.strerror(ffi.errno),
            (fd, atime.tv_sec, atime.tv_nsec, mtime.tv_sec, mtime.tv_nsec))