* [PATCH 4/4] syscall: golf + more idiomatic buffer initialization
2022-04-18 9:50 7% [PATCH 0/4] lei: finish wiring up pure-Perl stuff for Linux Eric Wong
@ 2022-04-18 9:50 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2022-04-18 9:50 UTC (permalink / raw)
To: meta
While `vec' is useful for user-supplied buffers to avoid excess
memory traffic, but provides no benefit when we need to allocate
our own buffers as we do in nodatacow_fh, since Perl can't elide
memset(ptr, 0, len). So just use the idiomatic `"\0" x $LEN' here.
---
lib/PublicInbox/Syscall.pm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/lib/PublicInbox/Syscall.pm b/lib/PublicInbox/Syscall.pm
index cc282f9f..22b779ad 100644
--- a/lib/PublicInbox/Syscall.pm
+++ b/lib/PublicInbox/Syscall.pm
@@ -390,12 +390,10 @@ sub rename_noreplace ($$) {
}
}
-sub nodatacow_fh {
- return if !defined($SYS_fstatfs);
- my $buf = '';
- vec($buf, 120 * 8 - 1, 1) = 0;
+sub nodatacow_fh ($) {
my ($fh) = @_;
- syscall($SYS_fstatfs, fileno($fh), $buf) == 0 or
+ my $buf = "\0" x 120;
+ syscall($SYS_fstatfs // return, fileno($fh), $buf) == 0 or
return warn("fstatfs: $!\n");
my $f_type = unpack('l!', $buf); # statfs.f_type is a signed word
return if $f_type != 0x9123683E; # BTRFS_SUPER_MAGIC
^ permalink raw reply related [relevance 7%]
* [PATCH 0/4] lei: finish wiring up pure-Perl stuff for Linux
@ 2022-04-18 9:50 7% Eric Wong
2022-04-18 9:50 7% ` [PATCH 4/4] syscall: golf + more idiomatic buffer initialization Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2022-04-18 9:50 UTC (permalink / raw)
To: meta
Some cleanups here, too; but this hopefully makes lei more
accessible to users who don't have space/bandwidth to use
Inline::C.
I thought I sent these out weeks ago, but Real-Life, power outages
and other lei problems got in the way, I guess :x
Eric Wong (4):
lei: clobber recvmsg buffer on errors
syscall: more idiomatic cmsghdr space allocation
lei: wire up pure Perl sendmsg/recvmsg for Linux users
syscall: golf + more idiomatic buffer initialization
lib/PublicInbox/IPC.pm | 4 ++++
lib/PublicInbox/LEI.pm | 4 ++++
lib/PublicInbox/LeiSelfSocket.pm | 1 +
lib/PublicInbox/Syscall.pm | 13 ++++++-------
lib/PublicInbox/TestCommon.pm | 16 ++++++++++++----
t/lei-daemon.t | 6 +++++-
t/lei-externals.t | 1 +
7 files changed, 33 insertions(+), 12 deletions(-)
^ permalink raw reply [relevance 7%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2022-04-18 9:50 7% [PATCH 0/4] lei: finish wiring up pure-Perl stuff for Linux Eric Wong
2022-04-18 9:50 7% ` [PATCH 4/4] syscall: golf + more idiomatic buffer initialization Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).