Commit Graph
2 Commits
Author SHA1 Message Date
qmuntal d045236a8d windows: implement Ftruncate using a single syscall on Windows
Ftruncate can be implemented on Windows using a single syscall. This
makes the implementation more efficient and less prone to races when
used in combination with other Seek calls.

Note that this is the x/sys counterpart for CL 618835.

Change-Id: Ie9be356bd953ccce85c0dd87a5dcc6ccf4fec464
Reviewed-on: https://go-review.googlesource.com/c/sys/+/621935
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Auto-Submit: Quim Muntal <quimmuntal@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
2024-10-28 14:49:53 +00:00
qmuntal 7143f4a4e1 windows: manually initialize NewNTUnicodeString
The `RtlInitUnicodeString` syscall can be avoided by manually
initializing the `NTUnicodeString`.

The process is described in [WdmlibRtlInitUnicodeStringEx](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdmsec/nf-wdmsec-wdmlibrtlinitunicodestringex).

The less syscalls, the better. It also makes the function faster:

```
goos: windows
goarch: amd64
pkg: golang.org/x/sys/windows
cpu: Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz
                      │    old.txt    │               new.txt                │
                      │    sec/op     │    sec/op     vs base                │
NewNTUnicodeString-12   181.05n ± 15%   96.32n ± 11%  -46.80% (p=0.000 n=10)
```

Change-Id: Iaf079acdcc2024cdca6b6b649a711f6be99c5b87
Reviewed-on: https://go-review.googlesource.com/c/sys/+/618175
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-10-07 19:17:02 +00:00