Re: [RFC PATCH 1/6] common-main: split common_exit() into a new file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2024.08.07 14:21, Junio C Hamano wrote:
> Josh Steadmon <steadmon@xxxxxxxxxx> writes:
> 
> > diff --git a/common-exit.c b/common-exit.c
> > new file mode 100644
> > index 0000000000..1aaa538be3
> > --- /dev/null
> > +++ b/common-exit.c
> > @@ -0,0 +1,26 @@
> > +#include "git-compat-util.h"
> > +#include "trace2.h"
> > +
> > +static void check_bug_if_BUG(void)
> > +{
> > +	if (!bug_called_must_BUG)
> > +		return;
> > +	BUG("on exit(): had bug() call(s) in this process without explicit BUG_if_bug()");
> > +}
> 
> Nice that this can stay file-scope static.
> 
> > +/* We wrap exit() to call common_exit() in git-compat-util.h */
> > +int common_exit(const char *file, int line, int code)
> > +{
> > +	/*
> > +	 * For non-POSIX systems: Take the lowest 8 bits of the "code"
> > +	 * to e.g. turn -1 into 255. On a POSIX system this is
> > +	 * redundant, see exit(3) and wait(2), but as it doesn't harm
> > +	 * anything there we don't need to guard this with an "ifdef".
> > +	 */
> > +	code &= 0xff;
> > +
> > +	check_bug_if_BUG();
> > +	trace2_cmd_exit_fl(file, line, code);
> > +
> > +	return code;
> > +}
> 
> I wonder if at least the part that primes the trace2 system needs to
> also be split out of the file that defines our own main(), though.
> 
> Are libgit.a users now responsible for calling things like
> trace2_initialize_clock(), trace2_initialize(), etc., themselves?  I
> am wondering if these calls are encapsulated into a simple helper
> function, say common_startup(), then the story we need to tell the
> libgit.a users may become simpler, i.e. you call common_startup, do
> your things, and then you somehow cause common_exit() to be called.

Yeah, I actually already have a fixup patch to move the initialization
into a separate object file as well. Will include in V2.





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux