Miscellaneous attributes


Defines

#define PACKED   __attribute__ (( packed ))
 Declare a data structure as packed.
#define __unused   __attribute__ (( unused ))
 Declare a variable or data structure as unused.
#define __pure   __attribute__ (( pure ))
 Declare a function as pure - i.e.
#define __const   __attribute__ (( const ))
 Declare a function as const - i.e.
#define __nonnull   __attribute__ (( nonnull ))
 Declare a function's pointer parameters as non-null - i.e.
#define __malloc   __attribute__ (( malloc ))
 Declare a pointer returned by a function as a unique memory address as returned by malloc-type functions.
#define __used   __attribute__ (( used ))
 Declare a function as used.
#define __aligned   __attribute__ (( aligned ( 16 ) ))
 Declare a data structure to be aligned with 16-byte alignment.
#define __always_inline   __attribute__ (( always_inline ))
 Declare a function to be always inline.
#define __shared   __asm__ ( "_shared_bss" ) __aligned
 Shared data.

Define Documentation

struct segoff PACKED   __attribute__ (( packed ))

Declare a data structure as packed.

A full register dump.

A segment register dump.

Parameter block for undi_loader().

Parameter block for pxenv_file_exit_hook().

Parameter block for pxenv_file_api_check().

Parameter block for pxenv_file_exec().

Parameter block for pxenv_get_file_size().

Parameter block for pxenv_file_read().

Parameter block for pxenv_file_select().

Parameter block for pxenv_file_close().

Parameter block for pxenv_file_open().

Parameter block for pxenv_undi_isr().

Parameter block for pxenv_undi_get_state().

Parameter block for pxenv_undi_get_iface_info().

Parameter block for pxenv_undi_get_nic_type().

Information for an ISAPnP or equivalent NIC.

Information for a PCI or equivalent NIC.

Parameter block for pxenv_undi_get_mcast_address().

Parameter block for pxenv_undi_force_interrupt().

Parameter block for pxenv_undi_initiate_diags().

Parameter block for pxenv_undi_clear_statistics().

Parameter block for pxenv_undi_get_statistics().

Parameter block for pxenv_undi_get_information().

Parameter block for pxenv_undi_set_packet_filter().

Parameter block for pxenv_undi_set_station_address().

Parameter block for pxenv_undi_set_mcast_address().

Parameter block for pxenv_undi_transmit().

A transmit buffer descriptor, as pointed to by s_PXENV_UNDI_TRANSMIT::TBD.

Parameter block for pxenv_undi_close().

Parameter block for pxenv_undi_open().

Parameter block for pxenv_undi_shutdown().

Parameter block for pxenv_undi_reset_adapter().

List of multicast MAC addresses.

Parameter block for pxenv_undi_initialize().

Parameter block for pxenv_undi_cleanup().

Parameter block for pxenv_undi_startup().

Parameter block for pxenv_udp_read().

Parameter block for pxenv_udp_write().

Parameter block for pxenv_udp_close().

Parameter block for pxenv_udp_open().

Parameter block for pxenv_tftp_get_fsize().

Parameter block for pxenv_tftp_read_file().

Parameter block for pxenv_tftp_read().

Parameter block for pxenv_tftp_close().

Parameter block for pxenv_tftp_open().

Parameter block for pxenv_stop_base().

Parameter block for pxenv_start_base().

Parameter block for pxenv_stop_undi().

Parameter block for pxenv_start_undi().

Format of buffer filled in by pxenv_get_cached_info().

Parameter block for pxenv_get_cached_info().

Parameter block for pxenv_unload_stack().

The !PXE structure.

A PCI expansion header.

An UNDI ROM ID structure.

An UNDI expansion ROM header.

This somewhat convoluted data structure simply describes the layout of a DHCP packet. Refer to RFC2131 section 2 for a full description.

The i386 has no equivalent of the pushal or popal instructions for the segment registers. We adopt the convention of always using the sequences

   pushw %gs ; pushw %fs ; pushw %es ; pushw %ds ; pushw %ss ; pushw %cs

and

   addw $4, %sp ; popw %ds ; popw %es ; popw %fs ; popw %gs

This is the data structure that is created and read back by these instruction sequences.

This data structure is created by the instructions

   pushfl
   pushal
   pushw %gs ; pushw %fs ; pushw %es ; pushw %ds ; pushw %ss ; pushw %cs

and can be read back using the instructions

   addw $4, %sp ; popw %ds ; popw %es ; popw %fs ; popw %gs
   popal
   popfl

prot_call() and kir_call() create this data structure on the stack and pass in a pointer to this structure.

Definition at line 462 of file compiler.h.

#define __unused   __attribute__ (( unused ))

Declare a variable or data structure as unused.

Definition at line 465 of file compiler.h.

#define __pure   __attribute__ (( pure ))

Declare a function as pure - i.e.

without side effects

Definition at line 470 of file compiler.h.

#define __const   __attribute__ (( const ))

Declare a function as const - i.e.

it does not access global memory (including dereferencing pointers passed to it) at all. Must also not call any non-const functions.

Definition at line 477 of file compiler.h.

#define __nonnull   __attribute__ (( nonnull ))

Declare a function's pointer parameters as non-null - i.e.

force compiler to check pointers at compile time and enable possible optimizations based on that fact

Definition at line 484 of file compiler.h.

#define __malloc   __attribute__ (( malloc ))

Declare a pointer returned by a function as a unique memory address as returned by malloc-type functions.

Definition at line 490 of file compiler.h.

#define __used   __attribute__ (( used ))

Declare a function as used.

Necessary only if the function is called only from assembler code.

Definition at line 497 of file compiler.h.

#define __aligned   __attribute__ (( aligned ( 16 ) ))

Declare a data structure to be aligned with 16-byte alignment.

Definition at line 500 of file compiler.h.

#define __always_inline   __attribute__ (( always_inline ))

Declare a function to be always inline.

Definition at line 503 of file compiler.h.

#define __shared   __asm__ ( "_shared_bss" ) __aligned

Shared data.

To save space in the binary when multiple-driver images are compiled, uninitialised data areas can be shared between drivers. This will typically be used to share statically-allocated receive and transmit buffers between drivers.

Use as e.g.

   struct {
        char    rx_buf[NUM_RX_BUF][RX_BUF_SIZE];
        char    tx_buf[TX_BUF_SIZE];
   } my_static_data __shared;

Definition at line 525 of file compiler.h.


Generated on Tue Apr 6 20:01:58 2010 for gPXE by  doxygen 1.5.7.1