From: "Joachim Schmitz" <jojo@schmitz-digital.de>
To: "'Junio C Hamano'" <gitster@pobox.com>
Cc: <git@vger.kernel.org>, "'Johannes Sixt'" <j6t@kdbg.org>
Subject: RE: [PATCH 1/2] Support for setitimer() on platforms lacking it
Date: Wed, 5 Sep 2012 11:59:37 +0200 [thread overview]
Message-ID: <00a601cd8b4d$2986dfa0$7c949ee0$@schmitz-digital.de> (raw)
In-Reply-To: <7v627t8l2d.fsf@alter.siamese.dyndns.org>
> From: Junio C Hamano [mailto:gitster@pobox.com]
> Sent: Wednesday, September 05, 2012 12:45 AM
> To: Joachim Schmitz
> Cc: git@vger.kernel.org; 'Johannes Sixt'
> Subject: Re: [PATCH 1/2] Support for setitimer() on platforms lacking it
>
> "Joachim Schmitz" <jojo@schmitz-digital.de> writes:
>
> >> From: Junio C Hamano [mailto:gitster@pobox.com]
> >> Sent: Tuesday, September 04, 2012 8:47 PM
> >> To: Joachim Schmitz
> >> Cc: git@vger.kernel.org; 'Johannes Sixt'
> >> Subject: Re: [PATCH 1/2] Support for setitimer() on platforms lacking it
> >>
> >> Junio C Hamano <gitster@pobox.com> writes:
> >>
> >> > "Joachim Schmitz" <jojo@schmitz-digital.de> writes:
> >> >
> >> >>> Only with the observation of "clone", I cannot tell if your timer is
> >> >>> working. You can try repacking the test repository you created by
> >> >>> your earlier "git clone" with "git repack -a -d -f" and see what
> >> >>> happens.
> >> >>
> >> >> It does update the counter too.
> >> >
> >> > Yeah, that was not a very good way to diagnose it.
> >> >
> >> > You see the progress from pack-objects (which is the underlying
> >> > machinery "git repack" uses) only because it knows how many objects
> >> > it is going to pack, and it updates the progress meter for every
> >> > per-cent progress it makes, without any help from the timer
> >> > interrupt.
> >>
> >> I think the "Counting objects: $number" phase is purely driven by
> >> the timer, as there is no way to say "we are done X per-cent so
> >> far".
> >>
> >> Doesn't your repack show "Counting objects: " with a number once,
> >> pause forever and then show "Counting objects: $number, done."?
> >
> > Yes, only once, when it is done
> > $ ./git repack -a -d -f
> > warning: no threads support, ignoring --threads
> > Counting objects: 140302, done.
> > Compressing objects: 1% (1385/138407)
>
> So this strongly suggests that (1) your "poor-man's" is not a real
> substitute for recurring itimer, and (2) users could live with the
> progress.c code without any itimer firing.
OK
> Perhaps a no-op macro would work equally well?
Like the following:
diff --git a/git-compat-util.h b/git-compat-util.h
index 18089f0..55b9421 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h@@ -163,6 +163,10 @@
#define probe_utf8_pathname_composition(a,b)
#endif
+#ifdef NO_SETITIMER
+#define setitimer(w,v,o) /* NOP */
+#endif
+
#ifdef MKDIR_WO_TRAILING_SLASH
#define mkdir(a,b) compat_mkdir_wo_trailing_slash((a),(b))
extern int compat_mkdir_wo_trailing_slash(const char*, mode_t);
Does work for me and does not seem to make any difference, not in those test cases at least
Does the inability to re-arm the timer depend on SA_RESTART, possibly?
If so we may instead want
#if SA_RSTART == 0 && defined(NO_SETITIMER)
Bye, Jojo
next prev parent reply other threads:[~2012-09-05 10:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-24 10:39 [PATCH 1/2] Support for setitimer() on platforms lacking it Joachim Schmitz
2012-08-28 20:15 ` Junio C Hamano
2012-08-30 16:40 ` Joachim Schmitz
2012-08-30 17:13 ` Junio C Hamano
2012-08-30 17:22 ` Joachim Schmitz
2012-09-01 9:50 ` Joachim Schmitz
2012-09-02 20:43 ` Junio C Hamano
2012-09-03 9:31 ` Joachim Schmitz
2012-09-03 18:15 ` Johannes Sixt
2012-09-03 18:57 ` Junio C Hamano
2012-09-03 19:03 ` Junio C Hamano
2012-09-03 20:05 ` Joachim Schmitz
2012-09-04 16:58 ` Junio C Hamano
2012-09-04 17:23 ` Joachim Schmitz
2012-09-04 18:28 ` Junio C Hamano
2012-09-04 18:47 ` Junio C Hamano
2012-09-04 21:47 ` Joachim Schmitz
2012-09-04 22:44 ` Junio C Hamano
2012-09-05 9:59 ` Joachim Schmitz [this message]
2012-09-04 18:48 ` Johannes Sixt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='00a601cd8b4d$2986dfa0$7c949ee0$@schmitz-digital.de' \
--to=jojo@schmitz-digital.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.