Sigrid Solveig Haflínudóttirfix a warning on 38687470335 years agoHistory
91 lines · 1.7 KB · C
RawDownload
#include <u.h>#include <libc.h>#include <tos.h> int usensec = 0; static int b2i[255] = {	['0'] =  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,	['a'] = 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,	['k'] = 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,	['u'] = 30, 31, 32, 33, 34, 35,	['A'] = 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,	['K'] = 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,	['U'] = 30, 31, 32, 33, 34, 35,}; static float notes[/* octave */]['g'-'A'+1 /* note */] = {#include "a440.h"}; inti36(uchar c){	return b2i[c];} floatnote2freq(uchar note, uchar octave){	note -= 'A';	octave -= '0';	if (octave >= nelem(notes) || note >= nelem(notes[0]))		return 0.0;	return notes[octave][note];} intpathopen(char *path, char *fmt, ...){	va_list arg;	char *s;	int fd; 	va_start(arg, fmt);	s = vsmprint(fmt, arg);	va_end(arg); 	if (s == nil || (path = smprint("%s/%s", path, s)) == nil)		sysfatal("memory");	free(s);	if ((fd = open(path, OWRITE)) < 0)		fprint(2, "%s: %r\n", path);	free(path); 	return fd;} /* * nsec() is wallclock and can be adjusted by timesync * so need to use cycles() instead, but fall back to * nsec() in case we can't */uvlongnanosec(void){	static uvlong fasthz, xstart;	uvlong x, div; 	if(fasthz == ~0ULL)		return nsec() - xstart; 	if(fasthz == 0){		fasthz = _tos->cyclefreq;		if(fasthz == 0){			fasthz = ~0ULL;			xstart = nsec();			fprint(2, "cyclefreq not available, falling back to nsec()\n");			fprint(2, "you might want to disable aux/timesync\n");			return 0;		}		cycles(&xstart);		return 0;	}	cycles(&x);	x -= xstart; 	/* this is ugly */	for(div = 1000000000ULL; x < 0x1999999999999999ULL && div > 1 ; div /= 10ULL, x *= 10ULL); 	return x / (fasthz / div);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t