summaryrefslogblamecommitdiffstats
path: root/main/common/genlib.h
blob: 84e6d10e415dcc60e9796fd9abfd84b14b44c301 (plain) (tree)
1
2
3
4


                                                                           
  




























































































                                                                           
                                                































































































                                                                         
                                       




























                                                        






                                                                       
 
                                      




                                                                      
                           

                     
                                   















                                        

             


                

                  



                              
/**************************************************************************
 *
 * Copyright (c) 2013 Alcatel-Lucent
 *
 * Alcatel Lucent licenses this file to You under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License.  A copy of the License is contained the
 * file LICENSE at the top level of this repository.
 * You may also obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 **************************************************************************
 *
 * genlib.h:
 *
 * Header file for functions in genlib.c (and some others).
 *
 * Original author:     Ed Sutter (ed.sutter@alcatel-lucent.com)
 *
 */
#ifndef _GENLIB_H_
#define _GENLIB_H_

#include <stdarg.h>

/* Some compilers consider sizeof() to be unsigned... */
#define sizeof (int)sizeof

extern int optind;
extern char *optarg;

extern int abs(int);
extern int atoi(char *);
extern int memcmp(char *, char *, int);
extern int strcmp(char *, char *);
extern int strcasecmp(char *, char *);
extern int strncmp(char *, char *, int);
extern int strlen(char *);
extern int strspn(char *, char *);
extern int strcspn(char *, char *);
extern int getopt(int,char **,char *);
extern int s_memcpy(char *, char *, int, int, int);
extern int s_memset(unsigned char *,unsigned char,int,int,int);
extern char *memccpy(char *, char *, int, int);
extern char *memchr(char *, char, int);
extern char *memcpy(char *, char *, int);
extern void bcopy(char *, char *, int);
extern char *memset(char *, char, int);
extern char *strcat(char *, char *);
extern char *strchr(char *, char);
extern char *strstr(char *, char *);
extern char *strcpy(char *, char *);
extern char *strncat(char *, char *, int);
extern char *strncpy(char *, char *, int);
extern char *strpbrk(char *, char *);
extern char *strrchr(char *, char);
extern char *strtok(char *, char *);
extern char *strtolower(char *string);
extern char *strtoupper(char *string);
extern long strtol(char *, char **, int);
extern unsigned short swap2(unsigned short);
extern unsigned long swap4(unsigned long);
extern unsigned long strtoul(char *, char **, int);
extern void getoptinit(void);
extern void prstring(char *);
extern void prlong(long);
extern long lceil(long n, long to);
extern unsigned long ulceil(unsigned long n, unsigned long to);

/* Included here, but not in genlib.c: */
extern int target_gotachar(void), gotachar(void);
extern int target_getchar(void), getchar(void);
extern int target_putchar(char), putchar(char);
extern int target_console_empty(void);
extern int AddrToSym(int,unsigned long,char *,unsigned long *);
extern int printf(char *, ...);
extern int sprintf(char *, char *, ...);
extern int snprintf(char *, int, char *, ...);
extern int vsnprintf(char *, int, char *, va_list);
extern int cprintf(char *, ...);
extern int getbytes(char *,int,int);
extern int getbytes_t(char *,int,int);
extern int putbytes(char *,int);
extern int getUsrLvl(void);
extern int setenv(char *,char *);
extern int shell_sprintf(char *,char *fmt,...);
extern int getline(char *,int,int);
extern int getline_t(char *,int,int);
extern int getline_p(char *,int,int,char *);
extern int getfullline(char *buf,int max,int ledit,int timeout,\
                       char *prefill, int echo);
extern int stkchk(char *);
extern int inRange(char *,int);
extern int More(void);
extern int validPassword(char *,int);
extern int newPasswordFile(void);
extern int extValidPassword(char *,int);
extern int setCmdUlvl(char *,int);
extern int askuser(char *);
extern int hitakey(void);
extern int getreg(char *,unsigned long *);
extern int putreg(char *,unsigned long);
extern int putargv(int,char *);
extern int addrtosector(unsigned char *,int *,int *,unsigned char **);
extern int AppFlashWrite(unsigned char *,unsigned char *,long);
extern int AppFlashErase(int);
extern int flushDcache(char *,int);
extern int invalidateIcache(char *,int);
extern int pollConsole(char *);
extern int sectortoaddr(int,int *,unsigned char **);
extern int sectorProtect(char *,int);
extern int FlashInit(void);
extern int cacheInit(void);
extern int pioget(char,int);
extern int extendHeap(char *,int);
extern int decompress(char *,int,char *);
extern int RedirectionCheck(char *);
extern int docommand(char *, int);
extern int SymFileFd(int);
extern int ShellVarInit(void);
extern int showDate(int);
extern int inUmonBssSpace(char *,char *);
extern int passwordFileExists(void);
extern int Mtrace(char *, ...);
extern int monWatchDog(void);
extern int ConsoleBaudSet(int);
extern int ChangeConsoleBaudrate(int);
extern int TextInRam(void);
extern int uMonInRam(void);
extern long portCmd(int, void *);
extern unsigned short xcrc16(unsigned char *buffer,unsigned long nbytes);
extern unsigned long crc32(unsigned char *,unsigned long);
extern unsigned long intsoff(void);
extern unsigned long getAppRamStart(void);
extern unsigned long assign_handler(long, unsigned long, unsigned long);
extern char *line_edit(char *);
#ifndef MALLOC_DEBUG
extern char *malloc(int);
extern char *realloc(char *,int);
#endif
extern char *getenvp(void);
extern char *getenv(char *);
extern char *getpass(char *,char *,int,int);
extern char *getsym(char *,char *,int);
extern char *monVersion(void);
extern char *monBuilt(void);
extern char *ExceptionType2String(int);
extern char *shellsym_chk(char,char *,int *,char *,int);
extern void stkusage(void);
extern void target_reset(void);
extern void flush_console_out(void);
extern void flush_console_in(void);
extern void initCPUio(void);
extern void historyinit(void);
extern void AppWarmStart(unsigned long mask);
extern void MtraceInit(char *,int);
extern void monrestart(int);
extern void historylog(char *);
extern void free(void *);
extern void puts(char *);
extern void putstr(char *);
extern void MonitorBuiltEnvSet(void);
extern void writeprompt(void);
extern void intsrestore(unsigned long);
extern void prascii(unsigned char *,int);
extern void cacheInitForTarget(void);
extern void exceptionAutoRestart(int);
extern void clrTmpMaxUsrLvl(int (*)(void));
extern void *setTmpMaxUsrLvl(void);
extern void rawon(void), rawoff(void);
extern void monHeader(int);
extern void mstatshowcom(void);
extern void CommandLoop(void);
extern void flushRegtbl(void);

extern void showregs(void), reginit(void);
extern void initUsrLvl(int);
extern void warmstart(int);
extern void coldstart(void);
extern void InitRemoteIO(void);
extern void appexit(int);
extern void pioset(char,int);
extern void pioclr(char,int);
extern void getargv(int *argc, char ***argv);
extern void init0(void), init1(void), init2(void), init3(void);
extern void EnableBreakInterrupt(void);
extern void DisableBreakInterrupt(void);
extern void ctxMON(void), ctxAPP(void);
extern void printMem(unsigned char *,int,int);
extern void monDelay(int);
extern void ticktock(void);
extern void atinit(void);
extern void umonBssInit(void);
extern void ConsoleBaudEnvSet(void);
extern void console_echo(int);
extern void LowerFlashProtectWindow(void);
#if INCLUDE_REDIRECT
extern void RedirectCharacter(char);
extern void RedirectionCmdDone(void);
#else
#define RedirectCharacter(c)
#define RedirectionCmdDone()
#endif

extern double atof(const char *str);
extern double strtod(const char *str, char **endptr);

extern unsigned long MonStack[];
extern const unsigned long crc32tab[];
extern unsigned short xcrc16tab[];
extern char *Mtracebuf;
extern char ApplicationInfo[];
extern unsigned long ExceptionAddr, LoopsPerMillisecond;
extern unsigned long APPLICATION_RAMSTART, BOOTROM_BASE;
extern int ConsoleDevice;
extern int ConsoleBaudRate;
extern int StateOfMonitor, AppExitStatus, ExceptionType;
extern int  bss_start, bss_end, boot_base;
extern int (*remoterawon)(void), (*remoterawoff)(void);
extern int (*remoteputchar)(int), (*remotegetchar)(void);
extern int (*remotegotachar)(void);
extern int (*dcacheFlush)(char *,int), (*icacheInvalidate)(char *,int);
extern int (*extgetUsrLvl)(void);
extern int (*moncomptr)(int,void *, void *, void *);

#define STACK_PREINIT_VAL   0x63636363

/* If the watchdog macro is defined, then we also define the
 * WATCHDOG_ENABLED macro so that code can use #ifdef WATCHDOG_ENABLED
 * or simply insert WATCHDOG_MACRO inline...
 * This eliminates the need for the ifdef wrapper if no other code is
 * included with the macro.
 */
#ifdef WATCHDOG_MACRO
extern int (*remoteWatchDog)(void);
#define WATCHDOG_ENABLED
#else
#define WATCHDOG_MACRO
#endif

#endif

#ifndef HUGE_VAL
#define HUGE_VAL (__builtin_huge_val());
#endif

#ifndef NULL
#define NULL 0
#endif

typedef struct {
    int quot;
    int rem;
} div_t;

typedef struct {
    long int quot;
    long int rem;
} ldiv_t;

extern ldiv_t ldiv(long,long);
extern div_t div(int,int);