Ignore:
Timestamp:
Nov 20, 2020, 12:23:31 AM (3 years ago)
Author:
alain
Message:

Introduce the fget_string() function.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libs/libalmosmkh/almosmkh.h

    r661 r678  
    141141
    142142/***************************************************************************************
    143  * This syscall returns an 32 bits integer from the standard "stdin" stream.
     143 * This syscall returns an 32 bits integer from the TXT terminal.
    144144 * The value is copied in buffer pointed by the <buf> argument
    145145 * Both decimal numbers and hexadecimal numbers (prefixed by 0x) are supported.
     
    148148 * @ returns 0 if success / returns -1 if failure.
    149149 **************************************************************************************/
    150 int get_uint32( unsigned int * buffer );
     150void get_uint32( unsigned int * buffer );
     151
    151152
    152153/***************************************************************************************
    153  * This syscall returns a character string from the standard "stdin" stream.
    154  * The string is copied in buffer pointed by the <string> argument.
    155  * If the number of characters exceed the buffer length, all character are canceled
    156  * in both the buffer & the echoed string, and a new string capture start.
     154 * These syscalls return a NUL terminated character string from the TXT terminal.
     155 * The characters are copied in buffer pointed by the <string> argument.
     156 * If the number of characters exceeds <maxlen>, all read characters are discarded,
     157 * and removed from the <string> buffer, and a new string capture start.
    157158 * - Only printable characters c such as (0x20 <= c) and (c < 0x7f) are echoed
    158159 *   and copied in the target buffer.
     
    162163 *   used to correct both the buffer content and the echoed string.
    163164 ***************************************************************************************
    164  * @ string   : pointer on the string buffer.
     165 * @ string   : pointer on the user space string buffer.
    165166 * @ maxlen   : max number of bytes in string buffer, including the terminating NUL.
    166  * @ returns string length (including NUL) if success / returns -1 if failure.
     167 * @ returns string length (including NUL) if success / returns 0 if failure.
    167168 **************************************************************************************/
    168169int get_string( char * string,
     
    327328                    unsigned int fdid );
    328329
    329 /*****************************************************************************************
     330/***************************************************************************************
     331 * This debug syscall displays on the kernel terminal the set of open file descriptors
     332 * registered in the fd_array of a process identified by the <pid> argument.
     333 * It can be called by any thread running in any cluster.
     334 ***************************************************************************************
     335 * @ pid        : target process identifier.
     336 setoreturn 0 if success / return -1 if undefined pid.
     337 **************************************************************************************/
     338int display_fd_array( unsigned int pid );
     339
     340/***************************************************************************************
     341 * This debug syscall displays on the kernel terminal the set of registered windows
     342 * in the FBF device. It can be called by any thread running in any cluster.
     343 ***************************************************************************************
     344 * @ pid    : target process identifier / all processes when pid == 0
     345 * return 0 if success / return -1 if undefined pid.
     346 **************************************************************************************/
     347int display_fbf_windows( unsigned int pid );
     348
     349/***************************************************************************************
    330350* This debug syscall is used to activate / desactivate the context switches trace
    331351* for a core identified by the <cxy> and <lid> arguments.
    332352* It can be called by any thread running in any cluster.
    333 *****************************************************************************************
     353****************************************************************************************
    334354* @ active     : activate trace if non zero / desactivate if zero.
    335355* @ cxy        : cluster identifier.
    336356* @ lid        : core local index.
    337357* @ returns O if success / returns -1 if illegal arguments.
    338 ****************************************************************************************/
     358***************************************************************************************/
    339359int trace( unsigned int active,
    340360           unsigned int cxy,
    341361           unsigned int lid );
    342362
    343 /****************************************************************************************
     363/***************************************************************************************
    344364 * This syscall implements an user-level interactive debugger that can be
    345365 * introduced in any user application to display various kernel distributed structures.
    346  ***************************************************************************************/
     366 **************************************************************************************/
    347367void idbg( void );
    348368
    349369
    350 /****************** Non standard (ALMOS-MKH specific) malloc operations  ***************/
    351 
    352 /////////////////////////////////////////////////////////////////////////////////////////
     370/****************** Non standard (ALMOS-MKH specific) malloc operations  **************/
     371
     372////////////////////////////////////////////////////////////////////////////////////////
    353373// General principles:
    354374// - In user space the HEAP zone spread between the ELF zone and the STACK zone,
     
    367387//        is allocated on demand in each cluster.
    368388//        We should introduce the possibility to dynamically allocate
    369 //        several vsegs in each cluster, using several mmap when required.
    370 /////////////////////////////////////////////////////////////////////////////////////////
     389//        several vsegs in each cluster (using several mmap) when required.
     390////////////////////////////////////////////////////////////////////////////////////////
    371391// Free blocks organisation in each cluster :
    372392// - All free blocks have a size that is a power of 2, larger or equal
     
    379399// - The pointers on the first free block for each size are stored in an
    380400//   array of pointers free[32] in the storage(x,y) descriptor.
    381 /////////////////////////////////////////////////////////////////////////////////////////
     401////////////////////////////////////////////////////////////////////////////////////////
    382402// Allocation policy:
    383403// - The block size required by the user can be any value, but the allocated
     
    400420//   If the vseg is aligned (the vseg base is a multiple of the
    401421//   vseg size), all allocated blocks are aligned on the actual_size.
    402 /////////////////////////////////////////////////////////////////////////////////////////
     422////////////////////////////////////////////////////////////////////////////////////////
    403423// Free policy:
    404424// - Each allocated block is registered in an alloc[] array of unsigned char.
     
    598618
    599619/*****************************************************************************************
    600  * This function returns in the <width>, <height> and <type> arguments
     620 * This syscall returns in the <width>, <height> and <type> arguments
    601621 * the implementation specific frame buffer features.
    602622 *****************************************************************************************
     
    606626 * @ returns 0 if success / returns -1 if not found.
    607627 ****************************************************************************************/
    608 int fbf_get_config( unsigned int * width,
    609                     unsigned int * height,
    610                     unsigned int * type );
    611 
    612 /*****************************************************************************************
    613  * This function creates a new window defined by the <l_zero>, <p_zero>, <nlines>,
    614  * and <npixels> arguments for the calling process, and register the process PID, the
    615  * allocated <wid>, and the window size and coordinates in the FBF device descriptor.
    616  * It returns in the output argument <buffer> the pointer on the buffer associated to
    617  * the window, mapped in user space.
     628int fbf_get_config( int * width,
     629                    int * height,
     630                    int * type );
     631
     632/*****************************************************************************************
     633 * This syscall creates a new window defined by the <l_zero>, <p_zero>, <nlines>,
     634 * and <npixels> arguments for the calling process, and register the client process PID,
     635 * the allocated <wid>, and the window size and coordinates in the list of windows rooted
     636 * in the FBF device descriptor. It returns in the output argument <buffer> the pointer
     637 * on the buffer associated to the window, mapped in user space.
    618638 * Warning : Both pixel [p_zero,l_zero] and pixel [p_zero+npixels-1,l_zero+nlines-1]
    619639 * must be contained in the frame buffer.
     
    623643 * @ nlines  : [in]  number of lines in the window.
    624644 * @ npixels : [in]  number of pixels per line in the window.
    625  * @ buffer  : [out] pointer on
    626  * @ returns <wid> if success / returns -1 if illegal size or coordinates.
    627  ****************************************************************************************/
    628 int fbf_create_window( unsigned int   l_zero,
    629                        unsigned int   p_zero,
    630                        unsigned int   nlines,
    631                        unsigned int   npixels,
    632                        void        ** buffer );
    633 
    634 /*****************************************************************************************
    635  * This function deletes an existing window, identified by the <wid> argument.
     645 * @ buffer  : [out] pointer on buffer associated to window, mapped in user space.
     646 * @ returns <kern_wid> if success / returns -1 if illegal size or coordinates.
     647 ****************************************************************************************/
     648int fbf_create_window( int     l_zero,
     649                       int     p_zero,
     650                       int     nlines,
     651                       int     npixels,
     652                       void ** buffer );
     653
     654/*****************************************************************************************
     655 * This syscall activates/desactivates the window identified by the <wid> argument,
     656 * according to the <active> argument.  The calling process must be the window owner.
     657 *****************************************************************************************
     658 * @ wid        : window identifier.
     659 * @ active     : activate window if non zero / desactivate window if zero.
     660 * @ returns 0 if success / returns -1 if illegal wid argument.
     661 ****************************************************************************************/
     662int fbf_active_window( int   wid,
     663                       int   active );
     664
     665/*****************************************************************************************
     666 * This syscall deletes an existing window, identified by the <wid> argument.
    636667 * The calling process must be the window owner.
    637668 *****************************************************************************************
    638669 * @ wid     : window identifier.
    639  * @ returns 0 if success / returns -1 if not found or process not owner.
    640  ****************************************************************************************/
    641 int fbf_delete_window( unsigned int  wid );
    642 
    643 /*****************************************************************************************
    644  * This function refreshes in FBF all lines of a window identified by the <wid> argument,
     670 * @ returns 0 if success / returns -1 if illegal wid argument.
     671 ****************************************************************************************/
     672int fbf_delete_window( int  wid );
     673
     674/*****************************************************************************************
     675 * This syscall refreshes in FBF all lines of a window identified by the <wid> argument,
    645676 * when the line index is in the interval [line_first,line_last[.
    646677 * It scans all registered windows to take into account the windows overlap.
     678 * The calling process must be the window owner, and the line_fist / line_last indexes
     679 * must be compatible with the window height.
    647680 *****************************************************************************************
    648681 * @ wid        : window identifier.
    649  * @ line_first : first line index.
    650  * @ line_last  : last line index (excluded).
    651  * @ returns 0 if success / returns -1 if illegal argument.
    652  ****************************************************************************************/
    653 int fbf_refresh_window( unsigned int   wid,
    654                         unsigned int   line_first,
    655                         unsigned int   line_last );
    656 
    657 /*****************************************************************************************
    658  * This function changes the size of a window identified by the <wid> argument as defined
     682 * @ line_first : first line index in window.
     683 * @ line_last  : last line index in window (excluded).
     684 * @ returns 0 if success / returns -1 if illegal arguments.
     685 ****************************************************************************************/
     686int fbf_refresh_window( int   wid,
     687                        int   line_first,
     688                        int   line_last );
     689
     690/*****************************************************************************************
     691 * This syscall gives the highest priority to the window identified by the <wid>
     692 * argument, and refresh the FBF to take into account the new windows overlap priorities.
     693 * The calling process must be the window owner.
     694 *****************************************************************************************
     695 * @ wid        : window identifier.
     696 * @ returns 0 if success / returns -1 if wid illegal argument.
     697 ****************************************************************************************/
     698int fbf_front_window( int   wid );
     699
     700/*****************************************************************************************
     701 * This syscall changes the size of a window identified by the <wid> argument as defined
    659702 * by the <width> and height> arguments. The calling process must be the window owner.
    660  * WARNING : Both pixel [p_zero,l_zero] and pixel [p_zero+width-1,l_zero+height-1]
    661  * must be contained in the frame buffer.
     703 * Both pixel [p_zero,l_zero] and pixel [p_zero+width-1,l_zero+height-1] must be
     704 * contained in the frame buffer.
    662705 *****************************************************************************************
    663706 * @ wid     : window identifier.
     
    666709 * @ returns 0 if success / returns -1 if illegal arguments.
    667710 ****************************************************************************************/
    668 int fbf_resize_window( unsigned int   wid,
    669                        unsigned int   width,
    670                        unsigned int   height );
    671 
    672 /*****************************************************************************************
    673  * This function changes the <l_zero> & <p_zero> coordinates of a window identified
     711int fbf_resize_window( int   wid,
     712                       int   width,
     713                       int   height );
     714
     715/*****************************************************************************************
     716 * This syscall changes the <l_zero> & <p_zero> coordinates of a window identified
    674717 * by the <wid> argument. The calling process must be the window owner.
    675  * WARNING : Both pixel [p_zero,l_zero] and pixel [p_zero+width-1,l_zero+height-1]
     718 * Both pixel [p_zero,l_zero] and pixel [p_zero+width-1,l_zero+height-1]
    676719 * must be contained in the frame buffer.
    677720 *****************************************************************************************
     
    681724 * @ returns 0 if success / returns -1 if illegal arguments.
    682725 ****************************************************************************************/
    683 int fbf_move_window( unsigned int  wid,
    684                      unsigned int  l_zero,
    685                      unsigned int  p_zero );
     726int fbf_move_window( int  wid,
     727                     int  l_zero,
     728                     int  p_zero );
     729
     730
     731
    686732
    687733/*****************************************************************************************
     
    695741 * @ returns 0 if success / returns -1 if illegal arguments.
    696742 ****************************************************************************************/
    697 int fbf_write( void         * buffer,
    698                unsigned int   length,
    699                unsigned int   offset );
     743int fbf_write( void * buffer,
     744               int    length,
     745               int    offset );
    700746
    701747/*****************************************************************************************
     
    709755 * @ returns 0 if success / returns -1 if illegal arguments.
    710756 ****************************************************************************************/
    711 int fbf_read( void         * buffer,
    712               unsigned int   length,
    713               unsigned int   offset );
     757int fbf_read( void * buffer,
     758              int    length,
     759              int    offset );
    714760
    715761
Note: See TracChangeset for help on using the changeset viewer.