}\r
\r
\r
+/* \r
+ *send asynchronous events\r
+ */\r
+static void\r
+__pnp_send_ae(\r
+ IN al_ci_ca_t* const p_ci_ca )\r
+{\r
+ int ci, cnt, i;\r
+ al_pnp_ca_event_t event_rec;\r
+ al_ae_info_t ae[MAX_AE]; /* pending Asynchronic Events */ \r
+\r
+ if (!p_ci_ca->cnt)\r
+ return;\r
+ \r
+ /* copy events in temp array */\r
+ ci_ca_lock_attr( p_ci_ca );\r
+ cnt = p_ci_ca->cnt;\r
+ ci = p_ci_ca->ci;\r
+ for (i=0; i<cnt; ++i)\r
+ {\r
+ ae[i] = p_ci_ca->ae[ci];\r
+ if ( ++ci >= MAX_AE )\r
+ ci = 0;\r
+ }\r
+ cnt = p_ci_ca->cnt;\r
+ p_ci_ca->cnt = 0;\r
+ p_ci_ca->ci = ci;\r
+ ci_ca_unlock_attr( p_ci_ca );\r
+\r
+ event_rec.p_ci_ca = p_ci_ca;\r
+ for (i=0; i<cnt; ++i)\r
+ {\r
+ event_rec.pnp_event = ae[i].pnp_event;\r
+ event_rec.port_index = ae[i].port_index;\r
+ __pnp_process_port_forward( &event_rec );\r
+ }\r
+} \r
+\r
\r
/*\r
* Check for port attribute changes.\r
}\r
}\r
\r
- /* send asynchronous events */\r
- {\r
- int ci, cnt, i;\r
- al_ae_info_t ae[MAX_AE]; /* pending Asynchronic Events */ \r
-\r
- if (!p_ci_ca->cnt)\r
- return;\r
- \r
- /* copy events in temp array */\r
- ci_ca_lock_attr( p_ci_ca );\r
- cnt = p_ci_ca->cnt;\r
- ci = p_ci_ca->ci;\r
- for (i=0; i<cnt; ++i)\r
- {\r
- ae[i] = p_ci_ca->ae[ci];\r
- if ( ++ci >= MAX_AE )\r
- ci = 0;\r
- }\r
- cnt = p_ci_ca->cnt;\r
- p_ci_ca->cnt = 0;\r
- p_ci_ca->ci = ci;\r
- ci_ca_unlock_attr( p_ci_ca );\r
-\r
- for (i=0; i<cnt; ++i)\r
- {\r
- event_rec.pnp_event = ae[i].pnp_event;\r
- event_rec.port_index = ae[i].port_index;\r
- __pnp_process_port_forward( &event_rec );\r
- }\r
- } \r
-\r
}\r
\r
\r
continue;\r
}\r
}\r
+\r
+ /* send asynchronous events */\r
+ __pnp_send_ae( p_ci_ca );\r
+ \r
}\r
\r
/* Dereference the PnP Manager. */\r