本文整理汇总了C++中P函数的典型用法代码示例。如果您正苦于以下问题:C++ P函数的具体用法?C++ P怎么用?C++ P使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了P函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: print_cpu
static void print_cpu(struct seq_file *m, int cpu)
{
struct rq *rq = cpu_rq(cpu);
unsigned long flags;
#ifdef CONFIG_X86
{
unsigned int freq = cpu_khz ? : 1;
SEQ_printf(m, "cpu#%d, %u.%03u MHz\n",
cpu, freq / 1000, (freq % 1000));
}
#else
SEQ_printf(m, "cpu#%d\n", cpu);
#endif
#define P(x) \
do { \
if (sizeof(rq->x) == 4) \
SEQ_printf(m, " .%-30s: %ld\n", #x, (long)(rq->x)); \
else \
SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rq->x));\
} while (0)
#define PN(x) \
SEQ_printf(m, " .%-30s: %Ld.%06ld\n", #x, SPLIT_NS(rq->x))
P(nr_running);
SEQ_printf(m, " .%-30s: %lu\n", "load",
rq->load.weight);
P(nr_switches);
P(nr_load_updates);
P(nr_uninterruptible);
PN(next_balance);
P(curr->pid);
PN(clock);
P(cpu_load[0]);
P(cpu_load[1]);
P(cpu_load[2]);
P(cpu_load[3]);
P(cpu_load[4]);
#undef P
#undef PN
#ifdef CONFIG_SCHEDSTATS
#define P(n) SEQ_printf(m, " .%-30s: %d\n", #n, rq->n);
#define P64(n) SEQ_printf(m, " .%-30s: %Ld\n", #n, rq->n);
P(yld_count);
P(sched_count);
P(sched_goidle);
#ifdef CONFIG_SMP
P64(avg_idle);
#endif
P(ttwu_count);
P(ttwu_local);
#undef P
#undef P64
#endif
spin_lock_irqsave(&sched_debug_lock, flags);
print_cfs_stats(m, cpu);
print_rt_stats(m, cpu);
rcu_read_lock();
print_rq(m, rq, cpu);
rcu_read_unlock();
spin_unlock_irqrestore(&sched_debug_lock, flags);
SEQ_printf(m, "\n");
}
示例2: scale8
uint8_t delta = a - b;
uint8_t scaled = scale8( delta, frac);
result = a - scaled;
}
return result;
}
int16_t inoise16_raw(uint32_t x, uint32_t y, uint32_t z)
{
// Find the unit cube containing the point
uint8_t X = (x>>16)&0xFF;
uint8_t Y = (y>>16)&0xFF;
uint8_t Z = (z>>16)&0xFF;
// Hash cube corner coordinates
uint8_t A = P(X)+Y;
uint8_t AA = P(A)+Z;
uint8_t AB = P(A+1)+Z;
uint8_t B = P(X+1)+Y;
uint8_t BA = P(B) + Z;
uint8_t BB = P(B+1)+Z;
// Get the relative position of the point in the cube
uint16_t u = x & 0xFFFF;
uint16_t v = y & 0xFFFF;
uint16_t w = z & 0xFFFF;
// Get a signed version of the above for the grad function
int16_t xx = (u >> 1) & 0x7FFF;
int16_t yy = (v >> 1) & 0x7FFF;
int16_t zz = (w >> 1) & 0x7FFF;
示例3: c_out
/* when vectorize = 0 */
void c_out(const char* prefix)
{
#if NMODL
Item *q;
extern int point_process;
#endif
Fprintf(fcout, "/* Created by Language version: %s */\n", nmodl_version_);
Fflush(fcout);
#if VECTORIZE
if (vectorize) {
vectorize_do_substitute();
kin_vect2(); /* heh, heh.. bet you can't guess what this is */
c_out_vectorize(prefix);
return;
}
#endif
#if VECTORIZE
P("/* NOT VECTORIZED */\n");
#endif
Fflush(fcout);
/* things which must go first and most declarations */
#if SIMSYS
P("#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include \"mathlib.h\"\n");
P("#include \"common.h\"\n#include \"softbus.h\"\n");
P("#include \"sbtypes.h\"\n#include \"Solver.h\"\n");
#else
P("#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include \"scoplib_ansi.h\"\n");
P("#undef PI\n");
P("#define nil 0\n");
P("#include \"md1redef.h\"\n");
P("#include \"section.h\"\n");
P("#include \"nrniv_mf.h\"\n");
P("#include \"md2redef.h\"\n");
#endif
printlist(defs_list);
printlist(firstlist);
P("static int _reset;\n");
#if NMODL
P("static ");
#endif
if (modelline) {
Fprintf(fcout, "char *modelname = \"%s\";\n\n", modelline);
} else {
Fprintf(fcout, "char *modelname = \"\";\n\n");
}
Fflush(fcout); /* on certain internal errors partial output
* is helpful */
P("static int error;\n");
#if NMODL
P("static ");
#endif
P("int _ninits = 0;\n");
P("static int _match_recurse=1;\n");
#if NMODL
P("static void ");
#endif
P("_modl_cleanup(){ _match_recurse=1;}\n");
/*
* many machinations are required to make the infinite number of
* definitions involving _p in defs.h to be invisible to the user
*/
/*
* This one allows scop variables in functions which do not have the
* p array as an argument
*/
#if SIMSYS || HMODL || NMODL
#else
P("static double *_p;\n\n");
#endif
funcdec();
Fflush(fcout);
/*
* translations of named blocks into functions, procedures, etc. Also
* some special declarations used by some blocks
*/
printlist(procfunc);
Fflush(fcout);
/* Initialization function must always be present */
#if NMODL
P("\nstatic void initmodel() {\n int _i; double _save;");
#endif
#if SIMSYS || HMODL
P("\ninitmodel() {\n int _i; double _save;");
#endif
#if (!(SIMSYS || HMODL || NMODL))
P("\ninitmodel(_pp) double _pp[]; {\n int _i; double _save; _p = _pp;");
#endif
#if !NMODL
P("_initlists();\n");
#endif
P("_ninits++;\n");
P(saveindep); /*see solve.c; blank if not a time dependent process*/
P("{\n");
initstates();
//.........这里部分代码省略.........
示例4: db
void alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
{
if (updated())
{
return;
}
// Lookup the fluid model
const ThermalPhaseChangePhaseSystem
<
MomentumTransferPhaseSystem<twoPhaseSystem>
>& fluid =
refCast
<
const ThermalPhaseChangePhaseSystem
<
MomentumTransferPhaseSystem<twoPhaseSystem>
>
>
(
db().lookupObject<phaseSystem>("phaseProperties")
);
const phaseModel& liquid
(
fluid.phase1().name() == dimensionedInternalField().group()
? fluid.phase1()
: fluid.phase2()
);
const label patchi = patch().index();
// Retrieve turbulence properties from model
const compressibleTurbulenceModel& turbModel =
db().lookupObject<compressibleTurbulenceModel>
(
IOobject::groupName
(
compressibleTurbulenceModel::propertiesName,
dimensionedInternalField().group()
)
);
const scalar Cmu25 = pow025(Cmu_);
const scalarField& y = turbModel.y()[patchi];
const tmp<scalarField> tmuw = turbModel.mu(patchi);
const scalarField& muw = tmuw();
const tmp<scalarField> talphaw = liquid.thermo().alpha(patchi);
const scalarField& alphaw = talphaw();
scalarField& alphatw = *this;
const tmp<volScalarField> tk = turbModel.k();
const volScalarField& k = tk();
const fvPatchScalarField& kw = k.boundaryField()[patchi];
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi];
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
const scalarField magGradUw(mag(Uw.snGrad()));
const fvPatchScalarField& rhow = turbModel.rho().boundaryField()[patchi];
const fvPatchScalarField& hew =
liquid.thermo().he().boundaryField()[patchi];
const fvPatchScalarField& Tw =
liquid.thermo().T().boundaryField()[patchi];
scalarField Tp(Tw.patchInternalField());
// Heat flux [W/m2] - lagging alphatw
const scalarField qDot
(
(alphatw + alphaw)*hew.snGrad()
);
scalarField uTau(Cmu25*sqrt(kw));
scalarField yPlus(uTau*y/(muw/rhow));
scalarField Pr(muw/alphaw);
// Molecular-to-turbulent Prandtl number ratio
scalarField Prat(Pr/Prt_);
// Thermal sublayer thickness
scalarField P(this->Psmooth(Prat));
scalarField yPlusTherm(this->yPlusTherm(P, Prat));
scalarField alphatConv(this->size(), 0.0);
// Populate boundary values
forAll(alphatw, faceI)
{
// Evaluate new effective thermal diffusivity
scalar alphaEff = 0.0;
if (yPlus[faceI] < yPlusTherm[faceI])
//.........这里部分代码省略.........
开发者ID:OlegSutyrin,项目名称:OpenFOAM-3.0.x,代码行数:101,代码来源:alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
示例5: catmouse
int
catmouse(int nargs,
char ** args)
{
int catindex, mouseindex, error;
int i;
int mean_cat_wait_usecs, mean_mouse_wait_usecs;
time_t before_sec, after_sec, wait_sec;
uint32_t before_nsec, after_nsec, wait_nsec;
int total_bowl_milliseconds, total_eating_milliseconds, utilization_percent;
/* check and process command line arguments */
if ((nargs != 9) && (nargs != 5)) {
kprintf("Usage: <command> NUM_BOWLS NUM_CATS NUM_MICE NUM_LOOPS\n");
kprintf("or\n");
kprintf("Usage: <command> NUM_BOWLS NUM_CATS NUM_MICE NUM_LOOPS ");
kprintf("CAT_EATING_TIME CAT_SLEEPING_TIME MOUSE_EATING_TIME MOUSE_SLEEPING_TIME\n");
return 1; // return failure indication
}
/* check the problem parameters, and set the global variables */
NumBowls = atoi(args[1]);
if (NumBowls <= 0) {
kprintf("catmouse: invalid number of bowls: %d\n",NumBowls);
return 1;
}
NumCats = atoi(args[2]);
if (NumCats < 0) {
kprintf("catmouse: invalid number of cats: %d\n",NumCats);
return 1;
}
NumMice = atoi(args[3]);
if (NumMice < 0) {
kprintf("catmouse: invalid number of mice: %d\n",NumMice);
return 1;
}
NumLoops = atoi(args[4]);
if (NumLoops <= 0) {
kprintf("catmouse: invalid number of loops: %d\n",NumLoops);
return 1;
}
if (nargs == 9) {
CatEatTime = atoi(args[5]);
if (CatEatTime < 0) {
kprintf("catmouse: invalid cat eating time: %d\n",CatEatTime);
return 1;
}
CatSleepTime = atoi(args[6]);
if (CatSleepTime < 0) {
kprintf("catmouse: invalid cat sleeping time: %d\n",CatSleepTime);
return 1;
}
MouseEatTime = atoi(args[7]);
if (MouseEatTime < 0) {
kprintf("catmouse: invalid mouse eating time: %d\n",MouseEatTime);
return 1;
}
MouseSleepTime = atoi(args[8]);
if (MouseSleepTime < 0) {
kprintf("catmouse: invalid mouse sleeping time: %d\n",MouseSleepTime);
return 1;
}
}
if ((NumMice >= INVALID_ANIMAL_NUM) || (NumCats >= INVALID_ANIMAL_NUM)) {
panic("Trying to use too many cats or mice: limit = %d\n", INVALID_ANIMAL_NUM);
}
kprintf("Using %d bowls, %d cats, and %d mice. Looping %d times.\n",
NumBowls,NumCats,NumMice,NumLoops);
kprintf("Using cat eating time %d, cat sleeping time %d\n", CatEatTime, CatSleepTime);
kprintf("Using mouse eating time %d, mouse sleeping time %d\n", MouseEatTime, MouseSleepTime);
/* create the semaphore that is used to make the main thread
wait for all of the cats and mice to finish */
CatMouseWait = sem_create("CatMouseWait",0);
if (CatMouseWait == NULL) {
panic("catmouse: could not create semaphore\n");
}
/* initialize our simulation state */
initialize_bowls();
/* initialize the synchronization functions */
catmouse_sync_init(NumBowls);
/* get current time, for measuring total simulation time */
gettime(&before_sec,&before_nsec);
/*
* Start NumCats cat_simulation() threads and NumMice mouse_simulation() threads.
* Alternate cat and mouse creation.
*/
for (catindex = 0; catindex < NumCats; catindex++) {
error = thread_fork("cat_simulation thread", NULL, cat_simulation, NULL, catindex);
if (error) {
//.........这里部分代码省略.........
示例6: do_set_scsi_encryption_key
static bRC do_set_scsi_encryption_key(void *value)
{
DCR *dcr;
DEVICE *dev;
DEVRES *device;
DIRRES *director;
char StoredVolEncrKey[MAX_NAME_LENGTH];
char VolEncrKey[MAX_NAME_LENGTH];
/*
* Unpack the arguments passed in.
*/
dcr = (DCR *)value;
if (!dcr) {
return bRC_Error;
}
dev = dcr->dev;
if (!dev) {
return bRC_Error;
}
device = dev->device;
if (!device) {
return bRC_Error;
}
*StoredVolEncrKey = '\0';
if (!get_volume_encryption_key(dcr, StoredVolEncrKey)) {
return bRC_Error;
}
/*
* See if a volume encryption key is available.
*/
if (!*StoredVolEncrKey) {
Dmsg0(dbglvl, "scsicrypto-sd: No encryption key to load on device\n");
return bRC_OK;
}
/*
* See if device supports hardware encryption.
*/
if (!device->drive_crypto_enabled) {
Dmsg0(dbglvl, "scsicrypto-sd: Trying to load encryption key on drive without support\n");
Emsg0(M_ERROR, 0,
_("scsicrypto-sd: Trying to load encryption key on drive without support\n"));
return bRC_Error;
}
/*
* The key passed from the director to the storage daemon is always base64 encoded.
*/
base64_to_bin(VolEncrKey, sizeof(VolEncrKey), StoredVolEncrKey, strlen(StoredVolEncrKey));
/*
* See if we have an key encryption key in the config then the passed key
* has been wrapped using RFC3394 key wrapping. We first copy the current
* wrapped key into a temporary variable for unwrapping.
*/
if (dcr->jcr && dcr->jcr->director) {
director = dcr->jcr->director;
if (director->keyencrkey) {
char WrappedVolEncrKey[MAX_NAME_LENGTH];
memcpy(WrappedVolEncrKey, VolEncrKey, MAX_NAME_LENGTH);
memset(VolEncrKey, 0, MAX_NAME_LENGTH);
if (aes_unwrap((unsigned char *)director->keyencrkey,
DEFAULT_PASSPHRASE_LENGTH / 8,
(unsigned char *)WrappedVolEncrKey,
(unsigned char *)VolEncrKey) != 0) {
Dmsg1(dbglvl,
"scsicrypto-sd: Failed to unwrap encryption key using %s\n", director->keyencrkey);
Emsg0(M_ERROR, 0,
_("scsicrypto-sd: Failed to unwrap encryption key, probably wrong KeyEncryptionKey in config\n"));
return bRC_Error;
}
}
}
Dmsg1(dbglvl, "scsicrypto-sd: Loading new crypto key %s\n", VolEncrKey);
P(crypto_operation_mutex);
if (set_scsi_encryption_key(dev->fd(), dev->dev_name, VolEncrKey)) {
dev->set_crypto_enabled();
V(crypto_operation_mutex);
return bRC_OK;
} else {
V(crypto_operation_mutex);
return bRC_Error;
}
}
示例7: main
int main(int number_of_scan_positions) {
NEWMAT::Matrix Pg(3,3);
NEWMAT::Matrix P(2,2);
double tempAx, tempAy, tempBx, tempBy;
double Gx, Gy, fi;
double Px, Py, Pfi;
Tocka Xp, G;
Razlomljena_Duzina *map_in_local_frame = new Razlomljena_Duzina[120];
Razlomljena_Duzina* map= new Razlomljena_Duzina[400];
int line_counter=0;
int number_of_lines_in_map=0;
for (int i=0; i<number_of_scan_positions; i++){
line_counter=0;
ifstream file_line ("map_lines_in_local_frame" +IntToString(i)+".txt");
P << 0 << 0 << 0 << 0; // set line variance in local frame to 0
while(!file_line.eof()){
file_line >> tempAx >> tempAy >> tempBx >> tempBy;
map_in_local_frame[line_counter].A.push_back(Tocka(tempAx, tempAy));
map_in_local_frame[line_counter].B.push_back(Tocka(tempBx, tempBy));
map_in_local_frame[line_counter].postaviVar(P);
line_counter++;
}
file_line.close();
ifstream file_pose ("pose_with_covariance" +IntToString(i)+".txt");
file_pose >> Gx >> Gy >> fi;
G=Tocka (Gx, Gy);
file_pose >> Px >> Py >> Pfi;
Pg << Px<< 0 << 0
<< 0 << Py <<0
<< 0 << 0 <<Pfi;
file_pose.close();
transformiraj2(map_in_local_frame,line_counter,G,fi,&Xp,Pg);
map=duzinacat2(map, number_of_lines_in_map, map_in_local_frame, line_counter, &number_of_lines_in_map);
}
poklopi_kartu2(map,number_of_lines_in_map);
Snimi ("final_map.m", map, number_of_lines_in_map);
}
示例8: P
b2Vec2 b2WeldJoint::GetReactionForce(float32 inv_dt) const
{
b2Vec2 P(m_impulse.x, m_impulse.y);
return inv_dt * P;
}
示例9: gtk_setup_config_box
void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
{
struct controlset *s, *s2;
union control *c;
int i;
if (!midsession) {
/*
* Add the About button to the standard panel.
*/
s = ctrl_getset(b, "", "", "");
c = ctrl_pushbutton(s, "About", 'a', HELPCTX(no_help),
about_handler, P(win));
c->generic.column = 0;
}
/*
* GTK makes it rather easier to put the scrollbar on the left
* than Windows does!
*/
s = ctrl_getset(b, "Window", "scrollback",
"Control the scrollback in the window");
ctrl_checkbox(s, "Scrollbar on left", 'l',
HELPCTX(no_help),
conf_checkbox_handler,
I(CONF_scrollbar_on_left));
/*
* Really this wants to go just after `Display scrollbar'. See
* if we can find that control, and do some shuffling.
*/
for (i = 0; i < s->ncontrols; i++) {
c = s->ctrls[i];
if (c->generic.type == CTRL_CHECKBOX &&
c->generic.context.i == CONF_scrollbar) {
/*
* Control i is the scrollbar checkbox.
* Control s->ncontrols-1 is the scrollbar-on-left one.
*/
if (i < s->ncontrols-2) {
c = s->ctrls[s->ncontrols-1];
memmove(s->ctrls+i+2, s->ctrls+i+1,
(s->ncontrols-i-2)*sizeof(union control *));
s->ctrls[i+1] = c;
}
break;
}
}
/*
* X requires three more fonts: bold, wide, and wide-bold; also
* we need the fiddly shadow-bold-offset control. This would
* make the Window/Appearance panel rather unwieldy and large,
* so I think the sensible thing here is to _move_ this
* controlset into a separate Window/Fonts panel!
*/
s2 = ctrl_getset(b, "Window/Appearance", "font",
"Font settings");
/* Remove this controlset from b. */
for (i = 0; i < b->nctrlsets; i++) {
if (b->ctrlsets[i] == s2) {
memmove(b->ctrlsets+i, b->ctrlsets+i+1,
(b->nctrlsets-i-1) * sizeof(*b->ctrlsets));
b->nctrlsets--;
ctrl_free_set(s2);
break;
}
}
ctrl_settitle(b, "Window/Fonts", "Options controlling font usage");
s = ctrl_getset(b, "Window/Fonts", "font",
"Fonts for displaying non-bold text");
ctrl_fontsel(s, "Font used for ordinary text", 'f',
HELPCTX(no_help),
conf_fontsel_handler, I(CONF_font));
ctrl_fontsel(s, "Font used for wide (CJK) text", 'w',
HELPCTX(no_help),
conf_fontsel_handler, I(CONF_widefont));
s = ctrl_getset(b, "Window/Fonts", "fontbold",
"Fonts for displaying bolded text");
ctrl_fontsel(s, "Font used for bolded text", 'b',
HELPCTX(no_help),
conf_fontsel_handler, I(CONF_boldfont));
ctrl_fontsel(s, "Font used for bold wide text", 'i',
HELPCTX(no_help),
conf_fontsel_handler, I(CONF_wideboldfont));
ctrl_checkbox(s, "Use shadow bold instead of bold fonts", 'u',
HELPCTX(no_help),
conf_checkbox_handler,
I(CONF_shadowbold));
ctrl_text(s, "(Note that bold fonts or shadow bolding are only"
" used if you have not requested bolding to be done by"
" changing the text colour.)",
HELPCTX(no_help));
ctrl_editbox(s, "Horizontal offset for shadow bold:", 'z', 20,
HELPCTX(no_help), conf_editbox_handler,
I(CONF_shadowboldoffset), I(-1));
/*
* Markus Kuhn feels, not totally unreasonably, that it's good
* for all applications to shift into UTF-8 mode if they notice
* that they've been started with a LANG setting dictating it,
//.........这里部分代码省略.........
示例10: main
//
// benchmarking program
//
int main( int argc, char **argv )
{
//
// process command line
//
if( find_option( argc, argv, "-h" ) >= 0 )
{
printf( "Options:\n" );
printf( "-h to see this help\n" );
printf( "-n <int> to set the number of particles\n" );
printf( "-p <int> to set the number of threads\n" );
printf( "-o <filename> to specify the output file name\n" );
return 0;
}
n = read_int( argc, argv, "-n", 1000 );
n_threads = read_int( argc, argv, "-p", 2 );
char *savename = read_string( argc, argv, "-o", NULL );
//
// allocate resources
//
fsave = savename ? fopen( savename, "w" ) : NULL;
particles = (particle_t*) malloc( n * sizeof(particle_t) );
set_size( n );
init_particles( n, particles );
pthread_attr_t attr;
P( pthread_attr_init( &attr ) );
P( pthread_barrier_init( &barrier, NULL, n_threads ) );
// VIRAJ
doBinning();
// !VIRAJ
// create threads
int *thread_ids = (int *) malloc( n_threads * sizeof( int ) );
for( int i = 0; i < n_threads; i++ )
thread_ids[i] = i;
pthread_t *threads = (pthread_t *) malloc( n_threads * sizeof( pthread_t ) );
//
// do the parallel work
//
double simulation_time = read_timer( );
for( int i = 1; i < n_threads; i++ )
P( pthread_create( &threads[i], &attr, thread_routine, &thread_ids[i] ) );
thread_routine( &thread_ids[0] );
for( int i = 1; i < n_threads; i++ )
P( pthread_join( threads[i], NULL ) );
simulation_time = read_timer( ) - simulation_time;
printf( "n = %d, n_threads = %d, simulation time = %g seconds\n", n, n_threads, simulation_time );
//
// release resources
//
P( pthread_barrier_destroy( &barrier ) );
P( pthread_attr_destroy( &attr ) );
free( thread_ids );
free( threads );
free( particles );
if( fsave )
fclose( fsave );
return 0;
}
示例11: lhd_io
/*
* I/O function (for both reads and writes)
*/
static
int
lhd_io(struct device *d, struct uio *uio)
{
struct lhd_softc *lh = d->d_data;
uint32_t sector = uio->uio_offset / LHD_SECTSIZE;
uint32_t sectoff = uio->uio_offset % LHD_SECTSIZE;
uint32_t len = uio->uio_resid / LHD_SECTSIZE;
uint32_t lenoff = uio->uio_resid % LHD_SECTSIZE;
uint32_t i;
uint32_t statval = LHD_WORKING;
int result;
/* Don't allow I/O that isn't sector-aligned. */
if (sectoff != 0 || lenoff != 0) {
return EINVAL;
}
/* Don't allow I/O past the end of the disk. */
/* XXX this check can overflow */
if (sector+len > lh->lh_dev.d_blocks) {
return EINVAL;
}
/* Set up the value to write into the status register. */
if (uio->uio_rw==UIO_WRITE) {
statval |= LHD_ISWRITE;
}
/* Loop over all the sectors we were asked to do. */
for (i=0; i<len; i++) {
/* Wait until nobody else is using the device. */
P(lh->lh_clear);
/*
* Are we writing? If so, transfer the data to the
* on-card buffer.
*/
if (uio->uio_rw == UIO_WRITE) {
result = uiomove(lh->lh_buf, LHD_SECTSIZE, uio);
membar_store_store();
if (result) {
V(lh->lh_clear);
return result;
}
}
/* Tell it what sector we want... */
lhd_wreg(lh, LHD_REG_SECT, sector+i);
/* and start the operation. */
lhd_wreg(lh, LHD_REG_STAT, statval);
/* Now wait until the interrupt handler tells us we're done. */
P(lh->lh_done);
/* Get the result value saved by the interrupt handler. */
result = lh->lh_result;
/*
* Are we reading? If so, and if we succeeded,
* transfer the data out of the on-card buffer.
*/
if (result==0 && uio->uio_rw==UIO_READ) {
membar_load_load();
result = uiomove(lh->lh_buf, LHD_SECTSIZE, uio);
}
/* Tell another thread it's cleared to go ahead. */
V(lh->lh_clear);
/* If we failed, return the error. */
if (result) {
return result;
}
}
return 0;
}
示例12: catch
bool ccTorus::buildUp()
{
if (m_drawPrecision < MIN_DRAWING_PRECISION)
return false;
//invalid parameters?
if ((m_rectSection && m_rectSectionHeight < ZERO_TOLERANCE) || m_insideRadius >= m_outsideRadius || m_angle_rad < ZERO_TOLERANCE)
return false;
//topology
bool closed = (m_angle_rad >= 2.0*M_PI);
const unsigned steps = m_drawPrecision;
unsigned sweepSteps = 4 * (closed ? steps : static_cast<unsigned>(ceil((m_angle_rad * steps)/(2.0*M_PI))));
unsigned sectSteps = (m_rectSection ? 4 : steps);
//vertices
unsigned vertCount = (sweepSteps + (closed ? 0 : 1)) * sectSteps; //DGM: +1 row for non closed loops
//faces
unsigned facesCount = sweepSteps * sectSteps *2;
//faces normals
unsigned faceNormCount = (sweepSteps + (closed ? 0 : 1)) * sectSteps; //DGM: +1 row for non closed loops
if (!closed)
facesCount += (m_rectSection ? 2 : sectSteps)*2;
if (!init(vertCount + (closed || m_rectSection ? 0 : 2), false, facesCount, faceNormCount + (closed ? 0 : 2)))
{
ccLog::Error("[ccTorus::buildUp] Not enough memory");
return false;
}
//2D section
std::vector<CCVector3> sectPoints;
try
{
sectPoints.resize(sectSteps);
}
catch (const std::bad_alloc&)
{
init(0,false,0,0);
ccLog::Error("[ccTorus::buildUp] Not enough memory");
return false;
}
double sweepStep_rad = m_angle_rad / sweepSteps;
double sectStep_rad = (2.0*M_PI) / sectSteps;
PointCoordinateType sectionRadius = (m_outsideRadius-m_insideRadius)/2;
if (m_rectSection)
{
//rectangular section
sectPoints[0].x = (m_outsideRadius-m_insideRadius)/2;
sectPoints[0].z = m_rectSectionHeight/2;
sectPoints[1].x = -sectPoints[0].x;
sectPoints[1].z = sectPoints[0].z;
sectPoints[2].x = sectPoints[1].x;
sectPoints[2].z = -sectPoints[1].z;
sectPoints[3].x = -sectPoints[2].x;
sectPoints[3].z = sectPoints[2].z;
}
else
{
//circular section
for (unsigned i=0; i<sectSteps; ++i)
{
double sect_angle_rad = i * sectStep_rad;
sectPoints[i].x = static_cast<PointCoordinateType>(cos(sect_angle_rad) * sectionRadius);
sectPoints[i].z = static_cast<PointCoordinateType>(sin(sect_angle_rad) * sectionRadius);
}
}
ccPointCloud* verts = vertices();
assert(verts);
assert(m_triNormals);
//main sweep
PointCoordinateType sweepRadius = (m_insideRadius + m_outsideRadius)/2;
for (unsigned t=0; t<(closed ? sweepSteps : sweepSteps+1); ++t)
{
//unit director vector
CCVector3 sweepU(static_cast<PointCoordinateType>(cos(t*sweepStep_rad)),
static_cast<PointCoordinateType>(sin(t*sweepStep_rad)),
0);
//section points
for (unsigned i=0; i<sectSteps; ++i)
{
CCVector3 P(sweepU.x * (sweepRadius + sectPoints[i].x),
sweepU.y * (sweepRadius + sectPoints[i].x),
sectPoints[i].z);
verts->addPoint(P);
}
//normals
if (m_rectSection)
{
m_triNormals->addElement(ccNormalVectors::GetNormIndex(CCVector3(0.0,0.0,1.0).u));
m_triNormals->addElement(ccNormalVectors::GetNormIndex((-sweepU).u));
m_triNormals->addElement(ccNormalVectors::GetNormIndex(CCVector3(0.0,0.0,-1.0).u));
//.........这里部分代码省略.........
示例13: lustre_mds_stat_by_fid
int lustre_mds_stat_by_fid( const entry_id_t * p_id, struct stat *inode )
{
char filename[MAXNAMLEN];
char buffer[1024];
struct lov_user_mds_data *lmd = ( struct lov_user_mds_data * ) buffer;
int rc;
/* ensure fid directory is opened */
if ( fid_dir_fd == NULL )
{
P( dir_lock );
if ( fid_dir_fd == NULL )
{
char path[RBH_PATH_MAX];
char *curr = path;
unsigned int mlen;
/* filesystem root */
strcpy( path, get_mount_point(&mlen) );
curr += mlen;
/* fid directory */
strcpy( curr, "/" FIDDIR );
/* open fir directory */
fid_dir_fd = opendir( path );
}
V( dir_lock );
if ( fid_dir_fd == NULL )
return errno;
}
sprintf( filename, DFID, PFID(p_id) );
memset( lmd, 0, sizeof( buffer ) );
rh_strncpy(buffer, filename, strlen(filename) + 1);
rc = ioctl( dirfd( fid_dir_fd ), IOC_MDC_GETFILEINFO, ( void * ) lmd );
if ( rc )
{
if ( errno == ENOTTY )
{
return ENOTSUP;
}
else if ( ( errno == ENOENT ) || ( errno == ESTALE ) )
{
DisplayLog( LVL_MAJOR, TAG_MDSSTAT, "Warning: %s: %s does not exist",
__FUNCTION__, filename );
return ENOENT;
}
else
{
DisplayLog( LVL_CRIT, TAG_MDSSTAT,
"Error: %s: IOC_MDC_GETFILEINFO failed for %s",
__FUNCTION__, filename );
return errno;
}
}
*inode = lmd->lmd_st;
return 0;
}
示例14: proc_sched_show_task
void proc_sched_show_task(struct task_struct *p, struct seq_file *m)
{
unsigned long nr_switches;
SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, p->pid,
get_nr_threads(p));
SEQ_printf(m,
"---------------------------------------------------------\n");
#define __P(F) \
SEQ_printf(m, "%-35s:%21Ld\n", #F, (long long)F)
#define P(F) \
SEQ_printf(m, "%-35s:%21Ld\n", #F, (long long)p->F)
#define __PN(F) \
SEQ_printf(m, "%-35s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F))
#define PN(F) \
SEQ_printf(m, "%-35s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F))
PN(se.exec_start);
PN(se.vruntime);
PN(se.sum_exec_runtime);
nr_switches = p->nvcsw + p->nivcsw;
#ifdef CONFIG_SCHEDSTATS
PN(se.statistics.wait_start);
PN(se.statistics.sleep_start);
PN(se.statistics.block_start);
PN(se.statistics.sleep_max);
PN(se.statistics.block_max);
PN(se.statistics.exec_max);
PN(se.statistics.slice_max);
PN(se.statistics.wait_max);
PN(se.statistics.wait_sum);
P(se.statistics.wait_count);
PN(se.statistics.iowait_sum);
P(se.statistics.iowait_count);
P(se.nr_migrations);
P(se.statistics.nr_migrations_cold);
P(se.statistics.nr_failed_migrations_affine);
P(se.statistics.nr_failed_migrations_running);
P(se.statistics.nr_failed_migrations_hot);
P(se.statistics.nr_forced_migrations);
P(se.statistics.nr_wakeups);
P(se.statistics.nr_wakeups_sync);
P(se.statistics.nr_wakeups_migrate);
P(se.statistics.nr_wakeups_local);
P(se.statistics.nr_wakeups_remote);
P(se.statistics.nr_wakeups_affine);
P(se.statistics.nr_wakeups_affine_attempts);
P(se.statistics.nr_wakeups_passive);
P(se.statistics.nr_wakeups_idle);
{
u64 avg_atom, avg_per_cpu;
avg_atom = p->se.sum_exec_runtime;
if (nr_switches)
avg_atom = div64_ul(avg_atom, nr_switches);
else
avg_atom = -1LL;
avg_per_cpu = p->se.sum_exec_runtime;
if (p->se.nr_migrations) {
avg_per_cpu = div64_u64(avg_per_cpu,
p->se.nr_migrations);
} else {
avg_per_cpu = -1LL;
}
__PN(avg_atom);
__PN(avg_per_cpu);
}
#endif
__P(nr_switches);
SEQ_printf(m, "%-35s:%21Ld\n",
"nr_voluntary_switches", (long long)p->nvcsw);
SEQ_printf(m, "%-35s:%21Ld\n",
"nr_involuntary_switches", (long long)p->nivcsw);
P(se.load.weight);
P(policy);
P(prio);
#ifdef CONFIG_PREEMPT_RT_FULL
P(migrate_disable);
#endif
P(nr_cpus_allowed);
#undef PN
#undef __PN
#undef P
#undef __P
{
unsigned int this_cpu = raw_smp_processor_id();
u64 t0, t1;
t0 = cpu_clock(this_cpu);
t1 = cpu_clock(this_cpu);
SEQ_printf(m, "%-35s:%21Ld\n",
"clock-delta", (long long)(t1-t0));
}
//.........这里部分代码省略.........
示例15: rtc_get_set
/*
Get from / Set to RTC
*/
LOCAL void rtc_get_set(SYSTIM *stm, BOOL set)
{
ID dd;
W asz;
ER er;
DATE_TIM dt;
struct tm ctm;
struct tzinfo tz;
/* open RTC (CLOCK) driver */
dd = tk_opn_dev("CLOCK", (set == TRUE) ? TD_WRITE : TD_READ);
if (dd < E_OK) {
P("Can't open CLOCK device [%#x]\n", dd);
goto exit0;
}
/* Note: The RTC is set to UTC rather than local time. because UTC
is not affected by time zone and daylight saving time. */
if (set == TRUE) { /* set date to RTC */
/* convert system time to UTC date/time */
dt_gmtime_ms(stm, &ctm);
/* set local date/time to RTC */
dt.d_year = ctm.tm_year;
dt.d_month = ctm.tm_mon + 1;
dt.d_day = ctm.tm_mday;
dt.d_hour = ctm.tm_hour;
dt.d_min = ctm.tm_min;
dt.d_sec = ctm.tm_sec;
dt.d_wday = ctm.tm_wday;
er = tk_swri_dev(dd, DN_CKDATETIME, &dt, sizeof(dt), &asz);
if (er < E_OK) {
P("Can't set CLOCK [%#x]\n", er);
goto exit1;
}
} else { /* get date from RTC */
/* get timezone of "UTC+0" */
memset(&tz, 0, sizeof(tz));
er = dt_tzset(&tz, "UTC+0");
if (er < E_OK ) {
P("dt_tzset(UTC+0) ERR [%#x]\n", er);
goto exit1;
}
/* get UTC date/time from RTC */
er = tk_srea_dev(dd, DN_CKDATETIME, &dt, sizeof(dt), &asz);
if (er < E_OK) {
P("Can't get CLOCK [%#x]\n", er);
goto exit1;
}
/* convert to system time */
ctm.tm_year = dt.d_year;
ctm.tm_mon = dt.d_month - 1;
ctm.tm_mday = dt.d_day;
ctm.tm_hour = dt.d_hour;
ctm.tm_min = dt.d_min;
ctm.tm_sec = dt.d_sec;
ctm.tm_wday = dt.d_wday;
ctm.tm_usec = 0;
ctm.tm_wday = -1;
ctm.tm_isdst = 0;
ctm.tm_yday = 0;
dt_mktime_ms(&ctm, &tz, stm);
}
exit1:
tk_cls_dev(dd, 0);
exit0:
return;
}